Java 实现两张网卡去Ping不同设备,并返回Boolean是否Ping通
如果只想用本机是否能Ping通可以使用Hutool Netutil包ping的工具类
查看本机系统 OS = System.*getProperty*("os.name").toLowerCase()
Windows ping -S 源地址 目标地址
Linux ping -I 源地址 目标地址
package org.jetlinks.pro.media.utils;
import lombok.SneakyThrows;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Timer;
import java.util.TimerTask;
public class IPConnectionUtils {
@SneakyThrows
public static Boolean isConnect(String command) {
BufferedReader br = null;
try{
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(command);
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
process.destroy();
}}, 50);//限制命令执行50ms
InputStreamReader inputStreamReader = new InputStreamReader(process.getInputStream(), "GB2312");
br = new BufferedReader(inputStreamReader);
String line = null;
StringBuffer sb = new StringBuffer();
while ((line = br.readLine()) != null) {
sb.append(line);
}
timer.cancel(); // 取消 Timer 定时任务
if(!sb.toString().contains("ms")){//返回命令带有ms说明能ping通
return false;
}
else{
return true;
}
}catch (Exception e){
throw new Exception();
}finally {
if (br != null){
br.close();
}
}
}
}