【发布时间】:2011-03-16 12:41:31
【问题描述】:
我正在尝试使用 libresolv 框架获取我的 dns 服务器 IP,但我得到的只是“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));
}
}
我的代码有什么问题吗?
谢谢
编辑
尝试使用 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
我得到了nameserver 10.0.0.138,这就是我想要的。
知道如何获得吗?
编辑2
我也试过了,但仍然得到“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));
【问题讨论】:
-
哦,现在我得到了你想要的......我现在能看到的唯一方法是实际解析
/etc/resolv.conf。我很好奇,你为什么需要你的 DNS 服务器的 IP? -
我在运行模拟器时也得到了0.0.0.0的信息。但是当我在真实设备上尝试代码时,它实际上返回了正确的 dns ip-address。所以你的代码没有问题。
标签: iphone objective-c cocoa-touch