requestRouteToHost始终返回false

时间:2011-12-16 12:23:52

标签: android android-wifi

请检查以下代码

 public boolean isOnline() {

ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
 int networkType = ConnectivityManager.TYPE_WIFI; 
return cm.requestRouteToHost(networkType, lookupHost("http://www.ati.ag"));
 //return cm.getActiveNetworkInfo().isConnectedOrConnecting();

}

  public static int lookupHost(String hostname) {
InetAddress inetAddress;
try {
    inetAddress = InetAddress.getByName(hostname);
} catch (UnknownHostException e) {
    return -1;
}
byte[] addrBytes;
int addr;
addrBytes = inetAddress.getAddress();
addr = ((addrBytes[3] & 0xff) << 24)
        | ((addrBytes[2] & 0xff) << 16)
        | ((addrBytes[1] & 0xff) << 8)
        |  (addrBytes[0] & 0xff);
System.out.println(addr);
return addr;

}

isOnline总是返回false,请帮助它是如何工作的? 或者,请告诉我有关检查服务器连接的任何其他方法 基本目的是检查,互联网是否在本地wifi上可用

2 个答案:

答案 0 :(得分:0)

您需要为InetAddress.getByName指定主机名,而不是URL,因此这一行:

return cm.requestRouteToHost(networkType, lookupHost("http://www.ati.ag"));

应该是:

return cm.requestRouteToHost(networkType, lookupHost("www.ati.ag"));

可能这会更好。

答案 1 :(得分:0)

作为您的方法的替代方案,如果您的目的只是检查Wifi是否可用,您可以试试这个。这对我有用:

ConnectivityManager cm=(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
if(cm==null)
    return false;
NetworkInfo networkInfo=cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if(networkInfo==null)
    return false;
return networkInfo.isConnected();