Ich habe empirisch gefunden, dass
%Vor%bindet an alle Netzwerkschnittstellen auf dem aktuellen Computer (statt nur an localhost - 127.0.0.1 oder den Hostnamen), aber ich konnte die Dokumentation, die besagt, dass dies garantiert ist, nicht finden.
Frage: Wo ist definiert, dass die Bindung an 0.0.0.0 in Java immer an alle Netzwerkschnittstellen bindet?
Die Verwendung von 0.0.0.0
bindet nur an IPv4-fähige Schnittstellen. Wenn Sie jedoch an ::
binden, sollte dies alle IPv4- und IPv6-Schnittstellen abdecken, vorausgesetzt, Ihr TCP / IP-Stack (und Java) hat IPv4-kompatible IPv6-Sockets aktiviert.
Sie müssen zum Kernel (oder den Socket-Bibliotheken, wenn Sie unter Windows sind) nach einer Erklärung von "warum" suchen. Auf meinem OS X-System erklären die man
Seiten es.
Von man 4 inet :
Sockets können mit der lokalen Adresse INADDR_ANY erstellt werden 'Wildcard' bei eingehenden Nachrichten. Die Adresse in einem connect (2) oder sendto (2) Aufruf kann als INADDR_ANY angegeben werden als 'dieser Host'. Das Die Adresse INADDR_BROADCAST ist als Kurzform für die Broadcast-Adresse im primären Netzwerk, wenn das erste Netzwerk konfiguriert wurde unterstützt Broadcast.
Von man 4 inet6 :
Sockets können mit der lokalen Adresse '::' erstellt werden (was gleich ist IPv6-Adresse 0: 0: 0: 0: 0: 0: 0: 0), um die Übereinstimmung von Wildcards bei eingehenden Nachrichten zu beeinflussen Nachrichten.
Es scheint sich um eine spezielle reservierte IP-Adresse zu handeln. Dieser Link hat wahrscheinlich mehr Informationen Ist 0.0.0.0 eine gültige IP-Adresse ? . Ich vermute also, dass es in Java nicht dokumentiert ist, da es mehr mit der tatsächlichen Netzwerkspezifikation zu tun hat.
Und wie einige andere erwähnt haben, scheint es, dass es die IP-Adresse von Chuck Norris ist: D
HTH
Tags und Links java networking