我在我的Ubuntu Karmic系统上遇到了一个奇怪的问题。无法绑定到IPv6地址
当我打电话的getaddrinfo()与AI_PASSIVE和AF_UNSPEC,一个空的主机和UDP端口12000获得一个绑定的地址,我只拿回一个IPv4的结果(0.0.0.0:12000例如)。
如果我更改了我的调用并指定了AF_INET6而不是AF_UNSPEC,则getaddrinfo()将返回“名称或服务未知”。
我不应该得到[::]:12000作为结果?
如果将主机设置为:: 1,则会发生同样的情况。
当我打电话的getaddrinfo()不AI_PASSIVE(得到一个 “连接” 的地址)主机 “本地主机” 和UDP端口12000,我第一次得到[:: 1]:12000然后127.0.0.1 :12000。
很显然,我的系统已准备好IPv6了(我可以同时ping到IPv4和IPv6地址以及DNS解析)。但是,我怎么能得到一个IPv6地址与getaddrinfo()绑定?
你们有什么想法可能是错的?
我的操作系统是Ubuntu Karmic,全新安装,没有任何网络调整。
谢谢。
PS:如果你不知道,但还是想帮我,你可以得到这个sample program或类型:
并给我的结果:
$ ./gai -ap空12000
我的结果是:
$ ./gai -ap空12000
的getaddrinfo(NULL, “12000”,{。家庭= AF_UNSPEC,.hints = 0 | AI_ADDRCONFIG | AI_PASSIVE})= 0 :
家庭= 2,原= 6 inet4:地址= 0.0.0.0,端口= 12000
在那里,你可以看到,我只有一个IPv4的结果。
它肯定帮了我 - 谢谢。 – 2011-03-04 13:15:04