在我的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 (可能更多,因为它似乎超时了)
感谢您的帮助!Keir
编辑:好的,我发现这是因为端口7对某些人来说是关闭的,有没有其他方法可以在不关闭端口7的情况下对他们进行ping?
发布于 2013-05-01 07:16:05
isReachable()方法通过尝试连接到TCP端口7(回应)来工作。它实际上并不关心端口7是否关闭。它所关心的是连接是否有任何类型的响应。ConnectException的评分与isReachable = true相同,而且它应该与成功的连接所需的时间大致相同,甚至更快。连接超时、主机无法访问等,速率为false。
该方法被宣传为在非常有限的情况下使用ICMP :您不在Windows上,并且您具有root权限。在实践中,这从来都不适用。
https://stackoverflow.com/questions/16304918
复制相似问题