La liaison à 0.0.0.0 en Java est-elle garantie pour être liée à toutes les interfaces réseau?

J’ai trouvé empiriquement que

Endpoint endpoint1 = Endpoint.create(new Ping()); endpoint1.publish("http://0.0.0.0:8080/ws/ping"); 

se lie à toutes les interfaces réseau de l’ordinateur actuel (au lieu de simplement localhost – 127.0.0.1 ou du nom d’hôte), mais je n’ai pas été en mesure de localiser la documentation indiquant que cela est garanti.

Question: Où est-il défini que la liaison à la version 0.0.0.0 en Java sera toujours liée à toutes les interfaces réseau?

Utiliser 0.0.0.0 ne liera que les interfaces compatibles IPv4. Cependant, si vous vous liez à :: , cela devrait couvrir toutes les interfaces IPv4 et IPv6, en supposant que les sockets IPv6 compatibles IPv4 de votre stack TCP / IP (et Java) soient activés.

Vous aurez besoin de consulter le kernel (ou les bibliothèques de socket, si vous êtes sous Windows) pour obtenir une explication de “pourquoi”. Sur mon système OS X, les pages de man expliquent.

De l’ homme 4 inet :

Des sockets peuvent être créés avec l’adresse locale INADDR_ANY pour appliquer une correspondance “générique” aux messages entrants. L’adresse d’un appel connect (2) ou sendto (2) peut être indiquée sous la forme INADDR_ANY pour signifier ‘cet hôte’. L’adresse distincte INADDR_BROADCAST est autorisée en tant que raccourci pour l’adresse de diffusion sur le réseau principal si le premier réseau configuré prend en charge la diffusion.

De l’ homme 4 inet6 :

Les sockets peuvent être créés avec l’adresse locale ‘::’ (qui correspond à l’adresse IPv6 0: 0: 0: 0: 0: 0: 0: 0) afin d’affecter la correspondance ‘caractère générique’ aux messages entrants.

Cela n’a rien à voir avec Java. 0.0.0.0 est INADDR_ANY, qui est une adresse spéciale que l’API de sockets C , appelée par Java, est sûre de recevoir de toute interface réseau.

Cela semble être une sorte d’adresse IP réservée spéciale. Ce lien a probablement plus d’informations Est-ce que 0.0.0.0 est une adresse IP valide? . Donc, je soupçonne que cela n’est pas documenté en Java car il est davantage lié à la spécification du réseau.

Et comme d’autres l’ont mentionné, il semble que ce soit l’adresse IP de Chuck Norris: D

HTH