146 votes

Qu'est-ce que l'adresse IP '::1' ?

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, qu'est-ce qui est exactement ::1 Adresse IP ? Est-ce l'adresse IP disponible par défaut ou l'adresse de bouclage ? Que se passe-t-il avec le code ci-dessus (ligne de travail) sur une machine avec une adresse IP dédiée et une connexion réseau ?

EDITAR:

Le code exact est utilisé pour lier une adresse IP spécifique à un socket. Le voici :

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);
}

6 votes

IPAddress.Any es ::0 Vous devez utiliser IPAddress.Loopback pour la connexion locale (loopback).

0 votes

Je pense que cela aurait dû être posté sur SuperUser.com.

0 votes

Je suppose que la partie qui dit IPAddress.Pars est vraiment IPAddress.Parse n'est-ce pas ?

191voto

Brad Points 61171

::1 est l'adresse de bouclage en IPv6. Pensez-y comme la version IPv6 de 127.0.0.1 .

Ver http://en.wikipedia.org/wiki/Localhost

1 votes

À l'exemple ci-dessus IPAddress.Parse("127.0.0.1") ne fonctionne pas sur ma machine.

1 votes

@Xaqron - Cela ressemble plus à une question de super-utilisateur, car cela signifie probablement que quelque chose est cassé avec votre pile TCP/IP IPv4.

0 votes

Xaqron, peut-être qu'un pare-feu bloque le trafic v4 mais pas le trafic v6 ?

28voto

Coding bat Points 167

Pour ajouter un peu plus d'informations, en IPv6, l'adresse de bouclage est représentée par 127 zéros suivis d'un 1, c'est-à-dire (0000... 127 fois... 1). Sa représentation aurait dû être la suivante : -> 0000:0000:0000:0000:0000:0000:0000:0001 mais nous avons une représentation abrégée pour cela. S'il y a tous les zéros dans un seul bloc, vous pouvez les remplacer par un seul 0. Cela devient donc -> 0: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 .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X