[英]iOS - Get device's DNS server address on IPv6 only network
我正在尝试连接到iOS上仅IPv6的网络时获取设备的DNS服务器地址。 以下代码适用于连接到IPv4网络的情况,但不适用于IPv6网络。 从此答案中获取的代码。
res_ninit(&_res);
res_state res = &_res;
for (int i=0; i < res->nscount; i++) {
sa_family_t family = res->nsaddr_list[i].sin_family;
if (family == AF_INET) {
NSLog(@"IPv4");
char str[INET_ADDRSTRLEN]; // String representation of address
inet_ntop(AF_INET, & (res->nsaddr_list[i].sin_addr.s_addr), str, INET_ADDRSTRLEN);
} else if (family == AF_INET6) {
NSLog(@"IPv6");
char address[INET6_ADDRSTRLEN]; // String representation of address
inet_ntop(AF_INET6, &(res->nsaddr_list [i].sin_addr.s_addr), address, INET6_ADDRSTRLEN);
} else {
NSLog(@"Unspecified");
}
}
在IPv6网络上, sin_family
始终为AF_UNSPEC
。 有什么建议/替代品吗?
尝试将res._u._ext.nsaddrs用于IPv6。
参见https://chromium.googlesource.com/chromium/src/+/master/net/dns/dns_config_service_posix.cc#437
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.