gpt4 book ai didi

android - 你能解释一下 android 中 requestRouteToHost() 的功能吗?

转载 作者:太空宇宙 更新时间:2023-11-03 11:27:26 25 4
gpt4 key购买 nike

在我的代码中,我使用了 requestRouteToHost() 方法:

这个路由是指把WIFI改成3G还是反之?

我的代码不工作...

public static boolean isHostAvailable(Context context, String urlString) throws UnknownHostException, MalformedURLException { 
boolean ret = false;
int networkType = ConnectivityManager.TYPE_WIFI;
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if(cm != null){
NetworkInfo nf = cm.getActiveNetworkInfo();
if(nf != null){
networkType = nf.getType();
}
URL url = new URL(urlString);
InetAddress iAddress = InetAddress.getByName(url.getHost());
ret = cm.requestRouteToHost(networkType, ipToInt(iAddress.getHostAddress()));
}
return ret;
}

public static int ipToInt(String addr) {
String[] addrArray = addr.split("\\.");

int num = 0;
for (int i=0;i<addrArray.length;i++) {
int power = 3-i;

num += ((Integer.parseInt(addrArray[i])%256 * Math.pow(256,power)));
}
return num;
}

谢谢

最佳答案

我认为这是一种记录极少的方法,虽然上面的评论说“将其视为 ping”可能是一种合理的解释,但我认为它不正确。它采用 int 作为主机地址的事实表明它是一个比这低得多的方法,JavaDoc 中的注释 This method requires the caller to hold the permission CHANGE_NETWORK_STATE 是另一个线索,这表明这会更改设备的内部路由表。 This link提供了更好的解释:

requestRouteToHost() doesn't establish connectivity on any network, it only ensures that any traffic for the specified host will be routed via the specified network type (wifi or mobile). Connectivity must already exist on the specified network.

考虑到所需的许可,这种解释更有意义。它似乎也不适用于 WiFi。因此,看起来此方法的用途如下:您希望确保与特定主机的连接将通过特定接口(interface)进行,并且该接口(interface)不是 WiFi。这对于长期、低流量、电池效率高的连接可能有意义,例如当您希望保持套接字对服务器开放并等待服务器偶尔发送消息时。移动数据接口(interface)比 WiFi 更有意义,因为您不需要一直保持 WiFi radio 处于 Activity 状态,而且移动网络 radio 始终处于开启状态。顺便说一句,这正是 iPhone 的服务器“推送”机制的工作原理:它通过移动数据接口(interface)保持与 Apple 服务器的套接字不断连接,等待服务器说些什么。

因此,与(当前选择的)正确答案相反,我建议提问者问题的答案:Does this routing means change the WIFI to 3G or vice versa?? 实际上, “是的,有点!”如果该方法返回 true,则调用者可以确信到该 IP 地址的连接将通过指定的接口(interface)发生。

还有 Google:该死的,因为你没有更好地记录你的一些 API!

关于android - 你能解释一下 android 中 requestRouteToHost() 的功能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6923253/

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