首页 > Java > java教程 > 正文

为什么我的 Android Ping 应用无法 Ping 外部 IP?

Barbara Streisand
发布: 2024-11-11 08:45:02
原创
150 人浏览过

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

从 Java Android 对外部 IP 执行 Ping 操作

在开发适用于 Android 的 Ping 应用程序时,在尝试对外部服务器执行 ping 操作时经常会遇到问题。虽然本地 IP ping 可能有效,但访问外部 IP 地址会带来一定的挑战。

此问题的一个潜在原因可能与外部服务器的可访问性有关。要检查这一点,请考虑修改代码以 ping 不同的外部服务器,例如 8.8.8.8 (Google DNS) 或 1.1.1.1 (Cloudflare DNS)。这将有助于确定问题是否出在您所定位的特定外部 IP 或您的代码上。

如果您已验证外部服务器的可访问性并且问题仍然存在,请仔细检查代码的语法。 InetAddress.isReachable() 方法采用两个参数:要 ping 的 IP 地址和超时值。确保您已设置适当的超时值,以便有足够的时间完成 ping 操作。

此外,请确保您已在应用程序清单中声明了必要的权限。您应该显式声明 android.permission.INTERNET 权限,该权限允许您的应用程序建立网络连接。

如果您已检查所有这些方面,但问题仍然存在,请考虑使用不同的方法来执行外部 IP ping 。已成功使用的一种方法是通过 Runtime.exec() 方法执行 shell 命令。下面是演示此方法的示例代码片段:

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 命令,该命令允许您 ping 外部 IP 地址具体来说。 -c 1 选项指定仅应发送单个 ping 请求。该方法返回一个布尔值,指示 ping 是否成功 (true) 或失败 (false)。

以上是为什么我的 Android Ping 应用无法 Ping 外部 IP?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板