带超时时间,到了时间,没通就返回false.
/**
* Purpose:ping ip
* @author Hermanwang
* @param ipAddress:ip
* @throws Exception
* @return boolean
*/
public static boolean pingIp(String ipAddress) throws Exception {
//此处 3是超时时间,单位是秒
return 0==Runtime.getRuntime().exec("ping -w 3 "+ipAddress).waitFor();
}
/**
* Purpose:ping host或者 port
* @author Hermanwang
* @param ipAddress:ip
* @param port:port/host
* @throws Exception
* @return boolean
*/
public static boolean pingHost(String ipAddress,int port) throws Exception {
boolean isReachable = false;
Socket connect = new Socket();
try {
InetSocketAddress endpointSocketAddr = new InetSocketAddress(ipAddress, port);
//此处3000是超时时间,单位 毫秒
connect.connect(endpointSocketAddr,3000);
isReachable = connect.isConnected();
} catch (Exception e) {
System.out.println(e.getMessage() + ", ip = " + ipAddress + ", port = " +port);
} finally {
if (connect != null) {
try {
connect.close();
} catch (IOException e) {
System.out.println(e.getMessage() + ", ip = " + ipAddress + ", port = " +port);
}
}
}
return isReachable;
}
亲测有效!!!