解决方案 »

  1.   

    isReachable和ping是一样的  都是发送ICMP报文
    如果你isReachable不行 而ping可以 有可能是你的防火墙 禁止了你的java发送ICMP报文 需要设置下
      

  2.   

    isReachable和ping 都是 基于 ICMP 请求回应的服务,那防火墙应该是一块拦截 服务啊,怎么能拦截 java程序呢? 这个防火墙设置如何查看?  谢谢
      

  3.   

    isReachable 使用的是TCP协议去连端口7.
    ping直接使用icmp协议去连接端口7.两个不一样,如果对端对连接协议做了限制,结果也不一样。
      

  4.   

    更正下,icmp没有端口号的说法。也就是ping是没有端口限制的。
      

  5.   

    更正下,icmp没有端口号的说法。也就是ping是没有端口限制的。
    所以两个是完全不一样的,一个TCP协议检测,一个ICMP协议检测。
      

  6.   


    你说的是基于端口的设置 但是现在很多是基于进程管理的  也就是说 你启动一个java 去发送ICMP,这个和内置的应用服务肯定是不一样的 
    http://blog.163.com/crazy20070501@126/blog/static/128659465201210910537998/
    你看下其中的“ 如果是添加自己的应用程序许可规则,可以通过下面的“允许允许另一程序”按钮进行添加,方法跟早期防火墙设置类似,点击后如下图”
    你也可以参考这里 
    http://stackoverflow.com/questions/2448666/how-to-do-a-true-java-ping-from-windows/2448719#2448719
    中间人家是这么说的
    isReachable() will use ICMP ECHO REQUESTs if the privilege can be obtained, otherwise it will try to establish a TCP connection on port 7 (Echo) of the destination host.