我正在尝试使用以下命令获取我的 dns 服务器 IPlibresolv
框架,但我得到的只是“0.0.0.0”
-(void) getDns
{
res_init();
for (int i=0;i<MAXNS;i++)
{
printf("%s",inet_ntoa(_res.nsaddr_list[i].sin_addr));
}
}
我这里的代码有什么问题吗?
Thanks
Edit
尝试使用SO的其他问题中的代码,但这就是当主机是“apple.com”时我得到的结果
2011-03-16 15:07:21.689 MobileMax[5876:207] RESOLVED 0:<17.149.160.49>
2011-03-16 15:07:21.691 MobileMax[5876:207] RESOLVED 1:<17.251.200.70>
2011-03-16 15:07:21.691 MobileMax[5876:207] RESOLVED 2:<17.112.152.57>
当运行命令时:cat /etc/resolv.conf
I get nameserver 10.0.0.138
这就是我想要的。
知道如何得到它吗?
Edit2
我也尝试过这个,但仍然得到“0.0.0.0”响应。
u_char buf[NS_PACKETSZ];
int responseLen;
res_query("www.google.com",ns_c_in,ns_t_ns,buf,sizeof(buf));
您没有解决任何问题,您只是打印存储在某个变量中的地址。你实际上需要打电话res_query
or res_search
。但在 iOS 上,您最好使用 CFHost* 方法,例如这个问题。还有来自苹果的示例代码(搜索MyResolveNameToAddress
函数)。
了解问题后更新:根据这个问题您无法访问/etc/resolv.conf
文件(权限)。但根据这个问题 you might通过使用 SystemConfigFramework 成功,但我不知道它是否适用于 iOS(该框架存在,但我不知道该信息是否公开)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)