iOS – 在仅IPv6networking上获取设备的DNS服务器地址
我正尝试在连接到iOS上的IPv6唯一networking时获取设备的DNS服务器地址。 以下代码适用于连接到IPv4networking但在IPv6networking上不起作用的情况。 来自这个答案的代码。
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"); } }
在IPv6networking中, sin_family
总是AF_UNSPEC
。 任何build议/select?
尝试使用res._u._ext.nsaddrs for IPv6。
请参阅https://chromium.googlesource.com/chromium/src/+/master/net/dns/dns_config_service_posix.cc#437