res_query()有时挂起,Android 4.4(等级19)NDK

时间:2013-12-17 19:41:24

标签: android dns android-ndk

我正在运行一行简单的代码来查找DNS名称:

__android_log_print(ANDROID_LOG_ERROR, "dns", "DNS query: %s", name);
if ((responseLen = res_query(name, 1, 1, buffer, sizeof(buffer))) < 0) {
  __android_log_print(ANDROID_LOG_ERROR, "dns", "DNS query failed");
  goto query_error;
}
__android_log_print(ANDROID_LOG_ERROR, "dns", "DNS query success");

我在Android 4.4等级19上测试过。

我从WIFI界面获得了名称,似乎是正确的。

有时打印“DNS查询成功”。它从不打印“DNS查询失败”。

我发现某些的时间只打印“DNS查询:blahblah”而且只是挂起。如果发生这种情况,它会反复挂起。

如果它有效,它也会重复工作。然后它会突然停止工作。就像潮水一样;当它很高时你可以导航但是当它很低时你就不能。

我已经确认缓冲区足够大(4KB)。

我还验证了挂起时没有进行DNS查询(尝试使用Wireshark捕获数据包;没有捕获任何内容)。

我已尝试使用Android 4.0(第14级)并且运行正常。

为什么res_query()会像那样挂起?

0 个答案:

没有答案