ホームページ >Java >&#&チュートリアル >Java でリモート ホストに ping できないのはなぜですか?
Java で IP アドレスに ping を実行する際の到達不能ホスト エラーのトラブルシューティング
指定されたコード スニペットは IP アドレスに ping を実行することを目的としていますが、プログラムで問題が発生しますlocalhost 以外のホストに ping を試みるとき。ファイアウォールを無効にするとネットワーク制限が解除されると考えられますが、コードはリモート ホストに効果的に ping できません。
この問題の根本は、メソッド InetAddress.isReachable() がさまざまなメカニズムを利用してホストの到達可能性を判断するという事実にあります。 Java ドキュメントに記載されているように、特権の利用可能性について:
「一般的な実装では、特権を取得できる場合は ICMP ECHO REQUEST を使用します。そうでない場合は、ポート 7 (エコー) で TCP 接続を確立しようとします。 "
ほとんどの場合、ICMP ECHO REQUEST はホストの到達可能性を確認するために使用されます。ただし、ICMP を使用するには、多くのオペレーティング システムで管理者 (root) 権限が必要です。これらの権限がない場合、メソッドはポート 7 での TCP 接続の確立に戻ります。
この問題を解決するには、プログラムが ICMP ECHO REQUEST を実行するための十分な権限を持っていることを確認してください。それが不可能な場合は、ICMP に依存しないホスト到達可能性テストの代替方法を使用することを検討してください。
以上がJava でリモート ホストに ping できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。