Java コードが Localhost 以外のホストに ping に失敗するのはなぜですか?

Mary-Kate Olsen
リリース: 2024-10-25 17:42:57
オリジナル
266 人が閲覧しました

Why is My Java Code Failing to Ping Hosts Other Than Localhost?

Java での ping を使用したホスト到達可能性のトラブルシューティング

Java では、InetAddress.isReachable() メソッドを使用して IP アドレスの ping を実行できます。ただし、localhost 以外のホストに到達できないように見える問題が発生する場合があります。

元の問題

次の Java コード スニペットを考えてみましょう:

<code class="java">public static void main(String[] args) throws UnknownHostException, IOException {
    String ipAddress = "127.0.0.1";
    InetAddress inet = InetAddress.getByName(ipAddress);

    System.out.println("Sending Ping Request to " + ipAddress);
    System.out.println(inet.isReachable(5000) ? "Host is reachable" : "Host is NOT reachable");

    ipAddress = "173.194.32.38";
    inet = InetAddress.getByName(ipAddress);

    System.out.println("Sending Ping Request to " + ipAddress);
    System.out.println(inet.isReachable(5000) ? "Host is reachable" : "Host is NOT reachable");
}</code>
ログイン後にコピー

このコードの出力は次のとおりです:

Sending Ping Request to 127.0.0.1
Host is reachable
Sending Ping Request to 173.194.32.38
Host is NOT reachable
ログイン後にコピー

この結果は、localhost への ping は成功したが、他のホストには到達できないことを示しています。

解決策の説明

Java ドキュメントの InetAddress.isReachable() メソッドによると:

"... 一般的な実装では、
権限を取得できる場合は ICMP ECHO REQUEST を使用し、そうでない場合は確立を試みます。宛先ホストのポート 7 (エコー) での TCP
接続..."

オプション #1 (ICMP ECHO REQUEST を使用) には通常、管理 (root) 権限が必要です。これらの権限が付与されていない場合、メソッドは TCP を使用して到達可能性を判断しようとします。

結論

localhost 以外のホストへの ping で問題が発生した場合、次の可能性があります。 ICMP 権限は付与されません。必要な権限が付与されていることを確認すると、「ホストに到達できません」エラーを解決できます。

以上がJava コードが Localhost 以外のホストに ping に失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!