繁体   English   中英

用Java更快地Ping服务器?

[英]Pinging a server faster in Java?

我正在尝试查看列表中的IP实际上是否在线。 我目前正在使用

    public boolean IsOnline(String ip) { 
    try (Socket s = new Socket(ip, 80)) {
        return true;
    } catch (IOException ex) {
    }
    return false;
}

检查服务器是否在线。 但是检查每个IP大约需要30秒。 有没有办法像另一种方法那样获得更快的结果?

不确定,但是INetAddress.isReachable可以满足您的需求? 您无法在Java中执行ICMP消息。

您可以使用INetAddress.isReachable

“如果可以获取特权,典型的实现将使用ICMP ECHO REQUEST,否则它将尝试在目标主机的端口7(Echo)上建立TCP连接。”

我可以想象的唯一原因是,没有人听80端口,而您的套接字连接超时是30秒,所以花费了30秒。 请通过在catch子句中添加ex.printStackTrace()进行检查。

请在这里阅读: 为什么空捕获会阻止一个坏主意?

您应如何“ ping”服务器,取决于它正在侦听的端口。 通常, INetAdresse.isReachable()可以正常工作。 如果管理员阻止了ICMP请求,则可以使用ssh端口22来探测服务器是否存在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM