ネットワーク接続を検証するために Android 用の ping アプリケーションを開発する場合、ローカル IP のみを ping するという制限に対処することが不可欠です。この記事では、根本的な問題を詳しく掘り下げ、ping 機能を外部サーバーに拡張するための解決策を提供します。
元の質問で共有されたコードは、Android での ping の基本的な実装を示しています。ただし、外部サーバーに ping を送信しようとすると不十分です。これは、Android がデフォルトでデバイスのローカル ネットワーク外のホストへの直接ネットワーク アクセスを制限しているためです。
この制限を克服するために、ネイティブ システム コマンドを使用する回避策が採用されています。提供されているソリューションは、Runtime.exec() を利用して、目的の IP アドレス (Google DNS の場合は 8.8.8.8 など) を指定して /system/bin/ping コマンドを実行します。
ソリューションを組み込んだ更新されたコードは次のとおりです。
private boolean executeCommand(){ System.out.println("executeCommand"); Runtime runtime = Runtime.getRuntime(); try { Process mIpAddrProcess = runtime.exec("/system/bin/ping -c 1 8.8.8.8"); int mExitValue = mIpAddrProcess.waitFor(); System.out.println(" mExitValue "+mExitValue); return mExitValue == 0; } catch (Exception e) { e.printStackTrace(); System.out.println(" Exception:"+e); } return false; }
このアプローチを利用すると、executeCommand() メソッドはネイティブ ping コマンドを開始し、その完了を待って、 ping 結果を示すブール値。これにより、外部サーバーに ping を送信できるようになり、Android アプリケーション内でより包括的なネットワーク接続評価が提供されます。
以上がAndroid Java アプリケーションから外部 IP に ping を送信するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。