作为一项任务,我必须在LAN上找到所有运行中的计算机。为此,我正在使用isReachable类的InetAddress函数。但是问题是,没有任何东西显示给我。因此,我尝试将isReachable与Google的IP一起使用,但这仍然无法实现。

这是代码:

import java.net.*;

public class alive{
    public static void main(String args[]){
        try{
            InetAddress ia = InetAddress.getByAddress(new byte[]{(byte)209, (byte)85, (byte)153, (byte)104});
            boolean b = ia.isReachable(10000);
            if(b){
                System.out.println("Reachable");
            }
            else{
                System.out.println("Unrachable");
            }

        }catch(Exception e){
            System.out.println("Exception: " + e.getMessage());
        }
    }
}

输出为:Unreachable

最佳答案

以下是有关为什么isReachable()可能无法始终按预期运行的一些详细信息

  • http://bordet.blogspot.com/2006/07/icmp-and-inetaddressisreachable.html
  • http://www.coderanch.com/t/206934/sockets/java/InetAdress-isReachable-Ping-Permissions

  • 正确的方法是使用ICMP协议(protocol)。我相信,这是 ping 在国际上使用的方式。 Here is an example让您入门。

    10-04 12:17