在开发适用于 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中文网其他相关文章!