Java Ping IP地址实现(Linux和Windows通用)

2020-12-28 159点热度 0人点赞 0条评论

Java代码ping网络中的设备,两种方式实现

  1. 使用Java自带API,需要被Ping的设备防火墙开启端口: 7 (Echo)
    String sdAddress = "192.168.0.1";
    InetAddress address = InetAddress.getByName(sdAddress);
    // 5000是超时5秒
    boolean reachable = address.isReachable(5000);
  2. 调用外部命令(注意注释里选择是Windows还是Linux下的ping命令)
    //Windows下ping一次的命令是ping -n 1 www.baidu.com
    //Linux下ping一次的命令是ping -c 1 www.baidu.com
    boolean isWindows = System.getProperty("os.name").toLowerCase().contains("win");
    Process p1 = java.lang.Runtime.getRuntime().exec(isWindows ? "ping -n 1 www.baidu.com" : "ping -c 1 www.baidu.com");
    int returnVal = p1.waitFor();
    boolean reachable = (returnVal == 0);

    或者根据timeout来确定

    try {
        Process p1 = Runtime.getRuntime().exec("ping -c 1 "+host);
        //发现有些系统,就算不通,也很快返回结果,但是500毫秒应该可以了,所以这个等待时间要注意下
        return p1.waitFor(500, TimeUnit.MILLISECONDS);
    } catch (Exception e) {
        return false;
    }

     

admin

这个人很懒,什么都没留下

文章评论

*

code