首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >线程安全InetAddress.isReachable()

线程安全InetAddress.isReachable()
EN

Stack Overflow用户
提问于 2013-05-01 00:39:45
回答 1查看 749关注 0票数 0

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

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

代码语言:javascript
复制
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?

EN

回答 1

Stack Overflow用户

发布于 2013-05-01 07:16:05

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16304918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档