2

就在昨天,在调试我的 android 应用程序时,我发现每当无法进行反向 dns 查找时,我的连接需要大量时间才能启动(大约 20-30 秒)。

我设法将来源缩小到 InetAddress.getHostName() 调用(这需要花费大量时间),但我(不幸的是)对如何解决它一无所知。我了解没有 DNS 验证的 SSL 连接更容易受到 MITM 攻击;在这种情况下,我宁愿通知用户有关问题,而不是让他永远等待应用程序加载和连接。我一直在来回浏览网页以寻找答案,我可以找到在 java 中解决该问题的方法,但它们都不适用于 android(至少我无法缓存 inetaddress 也无法使用替代类来解析我的主机名带有impl属性)。

有什么办法可以将超时限制为一些合理的超时(例如:2-3 秒)?我想节省将 ssl 套接字重写为 android 本机代码所需的时间。

谢谢!

4

1 回答 1

1

这(曾经)与 GLIBC 中的一个错误有关,即使没有配置 ipv6 接口,它也试图反向查找 ipv6 主机名。

问题和修复在这里讨论:

https://bugs.launchpad.net/ubuntu/+source/eglibc/+bug/417757

如果更新 /etc/hosts 文件以覆盖特定的 IP 地址,它应该可以工作

于 2011-07-28T08:48:52.510 回答