2009-11-16 8 views
1

Я использую getaddrinfo(), чтобы вернуть все назначенные IP-адреса (как IPv4, так и IPv6) для моей локальной машины. Я вижу, что на XP getaddrinfo() возвращает только: 1getaddrinfo(), возвращающий только :: 1 как адрес IPV6,

(я установил стек IPV6 на машину 2 XP и настроил адрес IPV6 и разобрал обоих пэров.Он работает нормально.Я проверю Ipconfig все его )

+1

Можете ли вы опубликовать код, который вы используете, для получения результатов и перебора по ним? – Gonzalo

ответ

3

Я считаю, что Гонсало находится на правильном пути. :: 1 является сокращением для локального хоста из того, что я понимаю. , , Почти во всех случаях IPV6 localhost :: 1 появляется сначала при повторении через возвращенный список. , ,

+0

Nitpick: не сокращение. :: 1 - местный адрес. Имена - это нечто иное. (В Debian имя по умолчанию для этого адреса - ip6-localhost.) – bortzmeyer

0

Ну, в адресе ::1 (или, точнее, в любом адресе, который имеет двойной двоеточие в нем), двойной двоеточие расширяет число нулевых бит, необходимо заполнить адрес на всю длину, поэтому расширенный версия выглядит как 0000:0000:0000:0000:0000:0000:0000:0001.

В ipv6 это единственный адрес, который определен как адрес обратной связи (в отличие от ipv4, где вы получаете 127.0.0.0/8 для этих целей).

(Вы уверены, что вы на самом деле итерация результата, а не просто проверять первый элемент связанного списка?)

0

Я бы посоветовал держаться подальше от двойной конфигурации стека на Windows XP и 2003. Стеки просто не играют хорошо друг с другом. Если вы хотите, чтобы IPv6 использовал Windows 2008 R2 или Windows 7.