2011-01-06 6 views
73

Я играл с сокетами на локальной машине без сетевого подключения. Смотрите ниже:Что такое IP-адрес ':: 1'?

IPAddress address = IPAddress.Any; // doesn't work 
IPAddress address = IPAddress.Parse("::1"); // works 

Так что именно ::1 IP-адрес? Является ли он доступным по умолчанию IP-адресом или это адрес обратной связи? что происходит с выше кодом (рабочая строка) на машине с выделенным IP-адресом и сетевым соединением?

РЕДАКТИРОВАТЬ:

Точный код используется для связывания конкретного IP-адреса к гнезду. Вот оно:

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

'IPAddress.Any' is' :: 0', вы должны использовать 'IPAddress.Loopback' для локального (loopback) соединения. –

+0

Я думаю, что это должно было быть опубликовано на SuperUser.com – Kamyar

+0

Я принимаю участие, которое говорит, что 'IPAddress.Pars' действительно' IPAddress.Parse', правильно? – Brad

ответ

100

::1 является петлевой адрес в IPv6. Подумайте об этом как о версии IPv6 от 127.0.0.1.

См http://en.wikipedia.org/wiki/Localhost

+1

в приведенном выше примере 'IPAddress.Parse (" 127.0.0.1 ")' не работает на моей машине. – Xaqron

+1

@ Xaqron - это больше похоже на вопрос суперпользователя, потому что это, вероятно, означает, что что-то сломано с вашим IPv4 стек TCP/IP. –

+0

'IPAddress.Any' разрешается до 0.0.0.0 – Brad

5

Просто, чтобы добавить немного больше информации к нему, в IPv6 петлевой адрес представлен в виде 127 нулей с последующим 1 (т.е. 0000 ... 127 times..1). Это должно было быть так:>0000: 0000: 0000: 0000: 0000: 0000: 0000: 0001, но для этого у нас есть короткое представление формы. Если в одном блоке есть все нули, вы можете заменить его на один 0. Таким образом, он становится ->0: 0: 0: 0: 0: 0: 0: 0001. Снова мы видим, что у нас есть прогоны нулей, их можно устранить, и мы получаем ->:: 0001 ->:: 1.