0

InetAddress.isReachable(NetworkInterface , int ttl, int timeOut) は、ttl からのホップ数で特定のアドレスに到達できる場合は true、そうでない場合は false を返します。

また、成功または失敗のメッセージを取得した IP アドレスを知ることはできますか? つまり、isReachable が成功または失敗の応答を取得する中間ホップの IP を取得できるということです。

4

1 に答える 1

0

マニュアルには次のように書かれています。

典型的な実装では、特権を取得できる場合は ICMP ECHO REQUEST を使用します。それ以外の場合は、宛先ホストのポート 7 (Echo) で TCP 接続を確立しようとします。

基本的に、いいえ。TCP/IP は設計されているため、通常の ICMP/TCP 送信を使用してホップごとの到達可能性情報を取得できる保証はありません。そのため、その情報を取得する信頼できる方法はありません。

「traceroute」コマンドは、送信するパケットに TTL を設定することにより、ホップごとにある程度信頼できる情報を取得できますが、isReachable は到達可能性をチェックするための「迅速かつ汚い」方法であり、この手法は使用しません。

于 2013-07-19T17:03:50.160 に答える