iOS-获取设备';仅IPv6网络上的DNS服务器地址

iOS-获取设备';仅IPv6网络上的DNS服务器地址,ios,dns,ipv6,ipv4,Ios,Dns,Ipv6,Ipv4,我正在尝试获取设备的DNS服务器地址,同时连接到iOS上仅限IPv6的网络。以下代码适用于连接到IPv4网络的情况,但不适用于IPv6网络。代码取自此 res_ninit(&&res); res_state res=&_res; 对于(int i=0;inscount;i++){ sau family\u t family=res->nsaddr\u list[i].sin\u family; if(族==AF_INET){ NSLog(@“IPv4”); char str[INET_ADDRS

我正在尝试获取设备的DNS服务器地址,同时连接到iOS上仅限IPv6的网络。以下代码适用于连接到IPv4网络的情况,但不适用于IPv6网络。代码取自此

res_ninit(&&res);
res_state res=&_res;
对于(int i=0;inscount;i++){
sau family\u t family=res->nsaddr\u list[i].sin\u family;
if(族==AF_INET){
NSLog(@“IPv4”);
char str[INET_ADDRSTRLEN];//地址的字符串表示形式
网络地址(AF_inet,&(res->nsaddr_list[i].sin_addr.s_addr),str,网络地址trlen);
}else if(family==AF_INET6){
NSLog(@“IPv6”);
字符地址[INET6_ADDRSTRLEN];//地址的字符串表示形式
inet\u ntop(AF\u INET6,&(res->nsaddr\u list[i].sin\u addr.s\u addr),地址,INET6\u ADDRSTRLEN);
}否则{
NSLog(@“未指定”);
}
}

在IPv6网络上,
sinu系列
总是
AF\u unsec
。有什么建议/替代方案吗

尝试将res.\u.\u ext.nsaddrs用于IPv6


请参见

尝试在IPv6上使用res.\u.\u ext.nsaddrs


看到了吗?@Neelesh没有。相反,我最终使用CFHostStartInfoResolution解析主机,而不是尝试获取DNS服务器地址。@mrvincenzo看到了吗?@Neelesh没有。相反,我最终使用CFHostStartInfoResolution解析主机,而不是尝试获取DNS服务器地址。@mrvincenzo请参阅
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");
    }
}