使用InetAddress.isReachable方法获取中间跃点

时间:2013-07-19 16:54:50

标签: java network-programming ping icmp traceroute

InetAddress.isReachable(NetworkInterface,int ttl,int timeOut)如果特定地址在ttl的跳数中是可到达的,则返回true,否则为false。

我还可以知道它获得成功或失败消息的IP地址吗?我的意思是我可以拥有中间跃点的IP,其中isReachable可以成功或失败。

1 个答案:

答案 0 :(得分:0)

手册说;

  

如果可以获得权限,典型的实现将使用ICMP ECHO REQUEST,否则它将尝试在目标主机的端口7(Echo)上建立TCP连接。

基本上没有。在设计TCP / IP时,您无法保证通过正常的ICMP / TCP传输获得逐跳可达性信息,因此没有可靠的方法来获取该信息。

“traceroute”命令可以通过在发送的数据包上设置TTL来逐跳获取半可靠信息,但isReachable是一种“快速且脏”的检查可达性的方法,并且不使用此技术。