Я играл с сокетами на локальной машине без подключения к сети. Увидеть ниже:
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);
}
c#
ip
system.net
Xaqron
источник
источник
IPAddress.Any
есть::0
, вы должны использоватьIPAddress.Loopback
для локального (петлевого) соединения.IPAddress.Pars
, действительноIPAddress.Parse
, верна?Ответы:
::1
- адрес обратной связи в IPv6. Думайте об этом как о версии IPv6127.0.0.1
.См. Http://en.wikipedia.org/wiki/Localhost
источник
IPAddress.Parse("127.0.0.1")
не работает на моей машине.Windows Server 2008 Enterprise Edition 64-bit
и сторонний брандмауэр не установлен. Мне интересно, почему я не могу привязаться127.0.0.1
к своему сокету, пока::1
он доступен.Чтобы добавить немного дополнительной информации, в IPv6 loopback-адрес представлен как 127 нулей, за которыми следует 1, т.е. (0000 ... 127 раз ... 1). Его представление должно было быть таким -> 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0001, но у нас есть краткое представление для этого. Если в одном блоке все нули, вы можете заменить его на единичный 0. Таким образом, он становится -> 0: 0: 0: 0: 0: 0: 0: 0001 . Снова мы видим, что у нас есть серии нулей, их можно удалить, и мы получаем -> :: 0001 -> :: 1 .
источник