gpt4 book ai didi

java - Android 调试 InetAddress.isReachable

转载 作者:行者123 更新时间:2023-12-03 17:53:00 26 4
gpt4 key购买 nike

我试图弄清楚在调试期间如何判断我的 android 应用程序中是否有特定的 ipaddress (我没有在实际设备上尝试过)。

从阅读看来, InetAddress.isReachable 应该为我做这件事。

最初我认为我可以编写如下代码:

InetAddress 地址 = InetAddress.getByAddress(new byte[] { (byte) 192, (byte) 168, (byte) 254, (byte) 10 );
成功 = 地址.isReachable(3000);

即使我有理由确定它是一个可访问的地址,这也会返回 false。

我发现如果我将其更改为 127, 0, 0, 1 它会返回成功。

我的下一次尝试是相同的代码,但我使用了从 www.google.com ping 获得的地址(撰写本文时为 72.167.164.64)。没有成功。

所以我尝试了另一个例子:

int timeout = 2000;
InetAddress[] addresses = InetAddress.getAllByName("www.google.com");
for (InetAddress address : addresses)
{
if ( address.isReachable(timeout))
{
success = true; // just set a break point here
}
}

我对 Java 和 Android 比较陌生,所以我怀疑我遗漏了一些东西,但我找不到任何可以表明那是什么的东西。

最佳答案

似乎 isReachable() 在 Android b/c 上从未运行良好,它尝试使用 ICMP,通常需要 root 权限,然后尝试建立到端口 7 的连接,这通常在现代系统上没有运行的服务。

您最好通过建立与您知道应该打开的端口的 TCP 连接来检查连接性。

关于java - Android 调试 InetAddress.isReachable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16441620/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com