有没有办法使用Java来检测网络破坏或网络较弱?
答案 0 :(得分:1)
您可以间歇性地测试与已知主机(如google)的http连接并检测ConnectionExceptions
URLConnection con = new URL("http://www.google.com/").openConnection();
con.setUseCaches(false);
con.setAllowUserInteraction(false);
while(true)
{
try
{
con.connect();
con.getContentType(); // just to make sure the connection works
// sleep for some interval
}
catch(IOException e)
{
// handle and break
}
}
答案 1 :(得分:1)
通常,无法以Java或任何其他语言100%准确地检测和诊断网络“破损”。实际上,甚至不清楚什么构成“破损”。这就是为什么(例如)当您在URL中输入伪造的DNS名称或IP地址时,您最喜欢的Web浏览器会给您一个模糊的错误消息。
问题在于,在许多情况下无法知道导致网络交互失败的原因:
其中许多情况很难诊断。尝试从Java诊断事物更难,因为Java不提供标准API来执行发送ICMP数据包等事情。基本上,您只能尝试解释在尝试连接套接字失败时收到的Java异常。
IMO,您最好的选择是利用现有的命令行工具,如“ping”和“traceroute”,并学会阅读茶叶。或者如果这太难了,请将网络诊断留给专家。