问题描述
这是测试代码:import java.io.IOException;import java.net.InetAddress;import java.net.UnknownHostException;public class TestPing {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubString host = "www.baidu.com";int timeOut = 3000;try {boolean statu = InetAddress.getByName(host).isReachable(timeOut);System.out.println(statu);} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}} 问题补充:谢谢你的回答; 我想知道刚才我写的这种为什么不行呢,这种看起来简单,是不是还有其它什么内在问题呢?
解决方案
换种方式实现吧,代码如下:引用 /* * * 能否ping通IP地址 * * @param server IP地址 * * @param timeout 超时时长(毫秒) * * @return true能ping通 */ public static boolean pingServer(String server, int timeout) { BufferedReader in = null; Runtime r = Runtime.getRuntime(); String pingCommand = "ping " + server + " -n 1 -w " + timeout; try { Process p = r.exec(pingCommand); if (p == null) { return false; } in = new BufferedReader(new InputStreamReader(p.getInputStream())); String line = null; while ((line = in.readLine()) != null) { if (line.startsWith("Reply from")) { return true; } } } catch (Exception ex) { ex.printStackTrace(); return false; } finally { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } return false; }
解决方案二:
你采用的这种方式因为防火墙或者是服务器的配置可能导致请求阻塞,导致操作超时。