Bir sunucu şöyle başladığınızı düşünelim? :0
, OS tarafından rastgele bir geçici bağlantı noktası seçmek için tasarlanmıştır, ancak hangisinin seçildiğini bilmem gerekiyor.Nasıl olsun adres
NOT: Ben srv.ListenAndServe()
kullanmak istediğim iyi bir varsayılan (ama unexported) dinleyicisi beri, kendi dinleyici oluşturmak ve srv.Listen(ln)
kullanmaktercih ediyorum.
Benim tercihi sadece tercihlerin, ben 'srv.Listen()' rota gitmek zor değil farkındayım. Sorunu önlediğin için, aynı zamanda port numarasını elde etmenin bir yolunu da anlayamıyorsun. – chowey
Doğru, aslında kendi dinleyicinizi yaratmaktan çok daha kötü şeyler yapmak için bunu yapmak mümkün değil. ListenAndServe, bir kolaylık işlevi anlamına gelir. Bu tür işlevlerin çoğunda olduğu gibi, ikincisi de özel bir şeye ihtiyacınız var, daha düşük bir seviye işlevi kullanmanız gerekir. –
Bu durumun aktarılmamış "tcpKeepAliveListener" işlevini kullandığını unutmayın, böylece TCP'nin hayatta kalmasını istiyorsanız [ayrıca bu kaynağı kopyalamanız gerekir] (https://golang.org/src/net/http/server.go?s= 51082: 51123 # L1967) şükürler olsun ki sadece bir düzine sıradan kod satırı ama bunu yapmak için biraz daha sinir bozucu hale getiriyor. –