我们有一个在便携式设备上运行的Java应用程序,而我们正在使用的JVM(CReMe)似乎有一个缓存负DNS查找的错误,即使我们告诉它不要。因此,当我们尝试连接到我们的服务器并且由于尚未建立网络连接而导致DNS查找失败时,应用程序将停滞不前,因为即使恢复连接,它也不会再次执行查找。
我们尝试通过将Socket打开到硬编码的IP地址进行测试,但显然不能保证给定的IP地址将来不会改变。任何人都可以提出另一种方法来验证我们是否有网络连接?
答案 0 :(得分:1)
您可以尝试自定义DNS客户端,例如dnsjava。
答案 1 :(得分:1)
您可以拥有IP列表并尝试打开连接。它们可能是您局域网上机器的IP,也可能是Google或Facebook的IP。
如果您无法连接到列表中的任何IP,则可以假设网络已关闭。
网络启动时,您可以使用DNS查找更新列表。
答案 2 :(得分:0)
也许您可以尝试使用Google的DNS服务器?怀疑他们会永远改变,并且非常确定他们通常会起来:)
8.8.8.8
8.8.4.4