当尝试将 Facebook 的数字 IP 地址解析为测试 2620:0:1cfe:face:b00c::3: 时,如果我将终止的 0 离开地址,inet_pton() barfs。如果我把它放回去,一切正常。

运行 ubuntu 9.10:

rc = inet_pton(AF_INET6, "2620:0:1cfe:face:b00c::3:0", &ip); -> OK
rc = inet_pton(AF_INET6, "2620:0:1cfe:face:b00c::3:", &ip); -> returns -2
ping6 -n www.v6.facebook.com 返回不带尾随 0 的 IP 地址。

最佳答案

看来 ping 在它的大智慧中,在 IP 地址后添加了一个冒号,如下所示:

PING maclawran.ca (173.230.128.18) 56(84) bytes of data.
64 bytes from ns.maclawran.ca (173.230.128.18): icmp_seq=1 ttl=51 time=50.3 ms

当然,如果您正在 ping 一个 IPv6 地址,它已经有很多冒号了:
PING 2620:0:1cfe:face:b00c::3(2620:0:1cfe:face:b00c::3) 56 data bytes
64 bytes from 2620:0:1cfe:face:b00c::3: icmp_seq=1 ttl=52 time=9.44 ms
======================================^ << THANKS PING

关于c - 这是使用 IPv6 的 inet_pton 中的错误吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4822904/

10-12 20:32