Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 线程安全的InetAddress.isReachable()_Java_Networking_Ping - Fatal编程技术网

Java 线程安全的InetAddress.isReachable()

Java 线程安全的InetAddress.isReachable(),java,networking,ping,Java,Networking,Ping,在我的Java应用程序中,我需要一次获得多个连接的ping,我尝试为每个连接使用一个线程并测量响应时间,但它们似乎都不正确 是否有线程安全的方法来测量连接的ping/响应时间?我目前正在使用: Thread thread = new Thread(new Runnable() { public void run(){ long start = System.currentTimeMillis(); someInetAddress.isReachable(5

在我的Java应用程序中,我需要一次获得多个连接的ping,我尝试为每个连接使用一个线程并测量响应时间,但它们似乎都不正确

是否有线程安全的方法来测量连接的ping/响应时间?我目前正在使用:

Thread thread = new Thread(new Runnable() {
    public void run(){
        long start = System.currentTimeMillis();
        someInetAddress.isReachable(5000);
        long timeTaken = System.currentTimeMillis() - start;
    }
});
然而,耗时似乎并不正确,因为使用150 ping的用户将获得5000 ping(可能更多,因为它似乎已超时)

谢谢你的帮助! 基尔

编辑:好的,我发现这是由于某些人关闭了端口7,有没有其他方法可以在不关闭端口7的情况下ping他们?

isReachable()方法通过尝试连接到TCP端口7(echo)来工作。它实际上并不关心端口7是否关闭。它关心的只是连接是否有任何类型的响应。
ConnectException
的评分为
isReachable=true
,它所需的时间应该与成功连接所需的时间大致相同,甚至更快。连接超时、无法访问主机等,速率为
false


该方法被宣传为在非常有限的情况下使用ICMP:您不在Windows上,并且您具有root权限。实际上,这永远不适用。

是否所有用户都超时了?是否必须在所有线程之间共享
someInetAddress
?防火墙?客户端是否允许ICMP Ping和/或TCP端口7(Echo)?@ChrisCooney-Nope,它对某些用户运行良好。@HeatfanJohn-Nope,每个someInetAddress对于每个线程都是唯一的