Je jouais avec des sockets sur une machine locale sans connexion réseau. Voir ci-dessous:
IPAddress address = IPAddress.Any; // doesn't work
IPAddress address = IPAddress.Parse("::1"); // works
Alors, quelle est exactement l'adresse IP ::1
? Est-ce l'adresse IP disponible par défaut ou l'adresse de bouclage? qu'advient-il du code ci-dessus (ligne de travail) sur une machine avec une adresse IP dédiée et une connexion réseau?
MODIFIER:
le code exact est utilisé pour lier une adresse IP spécifique à un socket. C'est ici:
ServicePoint sp = ServicePointManager.FindServicePoint(uri);
sp.BindIPEndPointDelegate = new BindIPEndPoint(Bind);
// here's the bind delegate:
private IPEndPoint Bind(ServicePoint sp, IPEndPoint ep, int retryCount)
{
return new IPEndPoint(IPAddress.Parse("::1"), 0);
}
::1
est l'adresse de bouclage dans IPv6. Pensez-y comme à la version IPv6 de 127.0.0.1
.
Juste pour ajouter un peu plus d’informations, l’adresse de bouclage IPv6 est représentée par 127 zéros suivis d’un 1 i.e (0000 ... 127 fois..1). Sa représentation aurait dû être comme ceci -> 00: 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0001 mais nous avons une représentation sous forme abrégée pour cela. S'il y a tous les zéros dans un seul bloc, vous pouvez le remplacer par un simple 0. Ainsi, il devient -> : 0: 0: 0: 0: 0: 0: 0001. Encore une fois, nous pouvons voir que nous avons des séries de zéros, ils peuvent être éliminés et nous obtenons -> :: 0001 -> :: 1.