Java代码ping网络中的设备,两种方式实现
- 使用Java自带API,需要被Ping的设备防火墙开启端口: 7 (Echo)
String sdAddress = "192.168.0.1"; InetAddress address = InetAddress.getByName(sdAddress); // 5000是超时5秒 boolean reachable = address.isReachable(5000);
- 调用外部命令(注意注释里选择是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; }
文章评论