在我的Java应用程序中,我需要立即获取多个连接的ping,我已尝试为每个连接使用一个线程并测量响应时间,但它们似乎都不正确。
是否有线程安全的方法来测量连接的ping /响应时间?我目前正在使用:
Thread thread = new Thread(new Runnable() {
public void run(){
long start = System.currentTimeMillis();
someInetAddress.isReachable(5000);
long timeTaken = System.currentTimeMillis() - start;
}
});
然而,timeTaken似乎不正确,因为150 ping的用户得到5000(可能更多,因为它似乎已经超时)
感谢帮助! 基尔
编辑:好的,发现由于端口7因某些人而关闭,有没有其他方法可以ping它们而不必让端口7关闭?
答案 0 :(得分:1)
isReachable()
方法通过尝试连接到TCP端口7(回声)来工作。它实际上并不关心端口7是否关闭。所有它关心的是连接是否有任何响应。 ConnectException
费率为isReachable = true
,与成功连接的时间大致相同,甚至可能更快。连接超时,主机无法访问等,速率为false
。
该方法被宣传为在非常有限的情况下使用ICMP:您不在Windows上并且您具有root权限。在实践中,这永远不适用。