getaddrinfo()仅返回:: 1作为IPV6地址,

时间:2009-11-16 05:24:02

标签: c++ networking winsock ipv6

我正在使用getaddrinfo()返回所有分配的IP地址(IPv4和 IPv6)用于我的本地机器。我在XP上看到,getaddrinfo()只返回:: 1

(我在2台XP机器上安装了IPV6堆栈并配置了IPV6地址并ping了两个对等设备。它们工作正常。我检查Ipconfig一切正常。 )

3 个答案:

答案 0 :(得分:3)

我相信Gonzalo走在正确的轨道上。根据我的理解,:: 1是localhost的简写。 。 。几乎在每种情况下,当迭代返回的列表时,IPV6 localhost :: 1首先出现。 。

答案 1 :(得分:0)

好吧,在::1地址(或者更确切地说,在任何地址中,其中有一个双冒号),双冒号扩展为零位数,需要将地址填充到全长,所以扩展版本看起来像0000:0000:0000:0000:0000:0000:0000:0001

在ipv6中,这是唯一的地址,特别定义为环回地址(与ipv4不同,为了这些目的,你得到127.0.0.0/8。)

(你确定,你实际上是在迭代结果而不只是检查链表的第一个元素吗?)

答案 2 :(得分:0)

我建议远离Windows XP和2003上的双堆栈配置。堆栈彼此之间的关系并不好。如果您希望IPv6使用Windows 2008 R2或Windows 7。