iOS - 仅在IPv6网络上获取设备的DNS服务器地址 [英] iOS - Get device's DNS server address on IPv6 only network

查看:491
本文介绍了iOS - 仅在IPv6网络上获取设备的DNS服务器地址的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在iOS上连接到仅IPv6网络时获取设备的DNS服务器地址。以下代码在连接到IPv4网络时不起作用,但在IPv6网络上不起作用。从答案获取的代码。

I am trying to get device's DNS server address while connected to IPv6 only network on iOS. The following code works well for when connected to IPv4 network but doesn't work on IPv6 network. Code taken from this answer.

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 。任何建议/替代品?

On IPv6 network, sin_family is always AF_UNSPEC. Any suggestions/alternatives?

推荐答案

尝试使用res._u._ext.nsaddrs进行IPv6。

Try using res._u._ext.nsaddrs for IPv6.

请参阅 https://chromium.googlesource。 com / chromium / src / + / master / net / dns / dns_config_service_posix.cc#437

这篇关于iOS - 仅在IPv6网络上获取设备的DNS服务器地址的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆