ホームページ  >  記事  >  Java  >  Android ping アプリが外部 IP への ping に失敗するのはなぜですか?

Android ping アプリが外部 IP への ping に失敗するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-11 08:45:02142ブラウズ

Why Does My Android Ping App Fail to Ping External IPs?

Java Android から外部 IP に ping を実行する

Android 用の ping アプリケーションを開発する場合、外部サーバーに ping を実行しようとすると問題が発生することがよくあります。ローカル IP ping は機能する可能性がありますが、外部 IP アドレスへのアクセスには特定の課題が生じます。

この問題の潜在的な原因の 1 つは、外部サーバーのアクセス可能性に関連している可能性があります。これを確認するには、8.8.8.8 (Google DNS) や 1.1.1.1 (Cloudflare DNS) などのさまざまな外部サーバーに ping を送信するようにコードを変更することを検討してください。これは、問題がターゲットとしている特定の外部 IP にあるのか、それともコードにあるのかを判断するのに役立ちます。

外部サーバーのアクセス可能性を確認しても問題が解決しない場合は、コードの構文を詳しく調べてください。 InetAddress.isReachable() メソッドは、ping を送信する IP アドレスとタイムアウト値の 2 つのパラメータを取ります。 ping 操作が完了するまでに十分な時間を確保できる適切なタイムアウト値が設定されていることを確認してください。

さらに、アプリケーションのマニフェストで必要な権限が宣言されていることを確認してください。 android.permission.INTERNET 権限を明示的に宣言する必要があります。これにより、アプリケーションがネットワーク接続を確立できるようになります。

これらすべての側面を確認しても問題が解決しない場合は、別のアプローチを使用して外部 IP ping を実行することを検討してください。 。成功している方法の 1 つは、Runtime.exec() メソッドを介してシェル コマンドを実行することです。このアプローチを示すコード スニペットの例を次に示します。

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);
        if(mExitValue==0){
            return true;
        }else{
            return false;
        }
    }
    catch (InterruptedException ignore)
    {
        ignore.printStackTrace();
        System.out.println(" Exception:"+ignore);
    } 
    catch (IOException e) 
    {
        e.printStackTrace();
        System.out.println(" Exception:"+e);
    }
    return false;
}

このコード スニペットでは、Runtime.exec() メソッドを使用して /system/bin/ping コマンドを実行します。これにより、外部 IP アドレスに ping を実行できます。具体的には。 -c 1 オプションは、単一の ping 要求のみを送信することを指定します。このメソッドは、ping が成功した (true) か失敗した (false) かを示すブール値を返します。

以上がAndroid ping アプリが外部 IP への ping に失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。