ホームページ >Java >&#&チュートリアル >私の Java プログラムが Localhost 以外のホストに ping できないのはなぜですか?
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 サイトの他の関連記事を参照してください。