我正在使用 getaddrinfo() 为我的本地计算机返回所有分配的 IP 地址(IPv4 和 IPv6)。我看到在 XP 上, getaddrinfo() 只返回 ::1
(我在 2 台 XP 机器上安装了 IPV6 堆栈并配置了 IPV6 地址并 ping 了两个对等方。它们工作正常。我检查了 Ipconfig 一切正常。)
我正在使用 getaddrinfo() 为我的本地计算机返回所有分配的 IP 地址(IPv4 和 IPv6)。我看到在 XP 上, getaddrinfo() 只返回 ::1
(我在 2 台 XP 机器上安装了 IPV6 堆栈并配置了 IPV6 地址并 ping 了两个对等方。它们工作正常。我检查了 Ipconfig 一切正常。)
我相信贡萨洛走在正确的轨道上。::1 是 localhost 据我了解的简写。. . 几乎在每种情况下,IPV6 localhost ::1 在遍历返回的列表时都会首先出现。. .
好吧,在::1
地址中(或者,更确切地说,在任何地址中,其中有一个双冒号)双冒号扩展成零位的数量,需要将地址填充到全长,所以扩展版本看起来像0000:0000:0000:0000:0000:0000:0000:0001
.
在 ipv6 中,这是唯一的地址,专门定义为环回地址(与 ipv4 不同,您可以从那里获得127.0.0.0/8
这些地址)。
(您确定您实际上是在迭代结果,而不仅仅是检查链表的第一个元素吗?)
我建议不要在 Windows XP 和 2003 上使用双堆栈配置。这些堆栈只是不能很好地相互配合。如果您想要 IPv6,请使用 Windows 2008 R2 或 Windows 7。