Wenn ich die Ausgabe von IPGlobalProperties.GetActiveTcpListeners()
untersuchen, sehe ich Hörer auf 0.0.0.0
sowie ::
.IPv6: Ist "::" gleich "0.0.0.0", wenn auf Verbindungen gewartet wird?
Ich glaube, dass das Abhören auf einem Port auf 0.0.0.0
entspricht dem Abhören eines Ports auf einem Netzwerkadapter, zumindest mein Speicher der Windows-Socket-API sagt, dass dies so ist.
Es macht auch Sinn für mich, dass ::
das äquivalent in IPv6 parlance bedeuten würde, so ein Zuhörer auf [::]:49156
zu Port lauscht 49156
auf alle IPv6-Netzwerkadapter werden würde, wo als [::1]:1434
würde 1434
nur auf dem IPv6-Loopback-Adapter-Port sein.
Ist das korrekt?
Ich nehme an, dass IPv6 listen Endpunkte nur für IPv6-Adapter gelten. Das heißt, wenn ein Adapter nur eine IPv4-Adresse hätte, würden Verbindungen zu diesem Port 49156
nicht von einem Listener unter [::]:49156
empfangen werden?
Auch hat bemerkt jemand, dass der MSDN-Artikel für GetActiveTcpListeners()
erklärt falsch, dass die zurückgegebenen Objekte „sind Zuhörer in allen TCP heißen außer den Staat Hören.“?
Unter Linux wird dies von der Setsockopt 'IPV6_V6ONLY' gesteuert, siehe die Manpage [ipv6 (7)] (http://linux.die.net/man/7/ipv6). – o11c
Auch unter Windows. Siehe [IPPROTO_IPV6 Socket-Optionen] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms738574.aspx). –