qiniu / happy-dns-objc

dns library for objective c
MIT License
501 stars 83 forks source link

关于是否兼容 ipv6 的问题 #29

Closed dopcn closed 8 years ago

dopcn commented 8 years ago

release 里写了全面兼容 ipv6,不过我对照这片文章过了一下几个兼容点时,其中有一点

IPV4时只需要通过res_ninit进行初始化就可以获取,但是在IPV6环境下需要通过res_getservers()接口才能获取。

在0.3.3.1版本的 setup_dns_server 里只有使用 res_ninit ,这样也可以兼容 ipv6 吗?

多谢

dopcn commented 8 years ago

我不是很了解 resolv.h 里的API,但是看命名,QNResolver 只支持请求域名对应 ipv4 地址是吗?

在测试用例中的 testUrlQueryV6 里query 方法返回的是ipv4 地址

2016-05-30 15:03:10.506 xctest[64877:1859172] host ipv6test.qiniu.com 115.231.183.168

longbai commented 8 years ago

set dns server在 这里 https://github.com/qiniu/happy-dns-objc/blob/master/HappyDNS/QNResolvUtil.m#L82

另外 query ipv6 只要针对这里处理,增加ns_t_aaaa记录就行, int len = res_nquery(res, host, ns_c_in, ns_t_a, answer, sizeof(answer));

之所以返回ipv4 是因为要保持兼容 1 ipv6的url需要修改,依赖的程序如果没有处理不能正常工作 2 目前ipv6 不是主流,只是为兼容性处理,不能因为ipv6 妨碍以前正常工作的代码。