私の Java プログラムが Localhost 以外のホストに ping できないのはなぜですか?

Susan Sarandon
リリース: 2024-10-25 09:09:02
オリジナル
525 人が閲覧しました

Why Can't My Java Program Ping Hosts Other Than Localhost?

Java での ping の問題のトラブルシューティング

Java を使用して IP アドレスに ping を実行しようとすると、一部のユーザーがローカルホストに到達できるときに問題が発生する場合がありますしかし、他のすべてのホストは「ホストに到達できません」というメッセージを返します。この記事では、根本的な原因を調査し、考えられる解決策を提供します。

コードの図

提供されたコード スニペットは、localhost (127.0.0.1) と 2 つの IP アドレスに ping を試みます。外部アドレス (173.194.32.38)。 isReachable() メソッドは、指定されたタイムアウト (5000 ミリ秒) 以内にホストに到達できる場合は true を返し、それ以外の場合は false を返します。

根本原因

Java ドキュメントによると、 isReachable() メソッドは通常、ICMP ECHO REQUEST を使用してホストの到達可能性を判断します。ただし、ICMP を使用するには、昇格された権限 (root 権限) が必要になることがよくあります。

解決策

オプション 1: 管理者権限を取得する

ICMP がブロックされていない場合システム ファイアウォールによって、ICMP 操作を実行するための十分な権限でコードが実行されていないことが問題である可能性があります。管理者権限でプログラムを実行してみてください。

// Windows
> runas /profile /user:administrator java -jar myapp.jar

// Unix/Linux
> sudo java -jar myapp.jar
ログイン後にコピー

ICMP がブロックされている場合、2 番目のオプションは代わりに TCP を使用することです。

オプション #2: TCP Ping を有効にする

<code class="java">// This example uses the Google DNS server
String ipAddress = "173.194.32.38";
try {
    Socket socket = new Socket();
    socket.connect(new InetSocketAddress(ipAddress, 80), 5000);
    System.out.println("Host " + ipAddress + " is reachable");
} catch (IOException e) {
    System.out.println("Host " + ipAddress + " is NOT reachable");
}</code>
ログイン後にコピー

以上が私の Java プログラムが Localhost 以外のホストに ping できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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