我用InetAddress.getByName(host).isReachable(timeOut); 来ping局域网中的主机  比如192.168.0.11  timeOut=3000ms但是有的时候我发现用cmd窗口去ping的时候(ping 192.168.0.11)  显示主机可以连接  
而用InetAddress.getByName(host).isReachable(timeOut);的时候却返回false 请问这个是为什么? 我想他们2个的结果应该是一致的啊?

解决方案 »

  1.   

    windows系统局域网内不支持ICMP REQUESTs? 需要详查一下
    另外TCP connection on port 7(ECHO)是不是也有什么限制呢
      

  2.   

    又试了一下,通过此方法
    import java.io.IOException;
    import java.net.InetAddress;
    import java.net.UnknownHostException;public class Test {
        
        public static void main(String[] args) {
         try {
         boolean result = InetAddress.getByName("192.168.0.1").isReachable(30000);
    System.out.println(result); 
    } catch (UnknownHostException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
        }
    }
    ICMP ECHO REQUESTs(另外检查了路由器端口7是不通的,可见不是通过TCP connection on port 7) 可以连通我局域网内路由器,但不能连通另外一台机器(192.168.0.101) 但都是可以命令行ping通的,也许这是和目标主机设置有关,但是和ping又有所区别
      

  3.   

    如果不是为了研究这个是为什么 纯粹的应用的话
    可以java调用cmd命令行ping?