尝试确保服务器可访问时出现问题(主机可访问)

时间:2011-07-16 20:47:28

标签: android android-emulator ip


我想检查服务器是否可访问。在此处找到一个示例,将服务器的IP作为整数值。我试图按照以下方式检查它(在活动中):

    boolean s = isHostReachable(getString(R.string.server_address));

但没有运气,它会返回false,而

    final int serverIP = getHostIPAsInt(getString(R.string.server_address));

始终返回值。以下是方法:

public static boolean isHostReachable(final String hostName){
    try {
        return InetAddress.getByName(hostName).isReachable(255);
    } catch (UnknownHostException e) {
        return false;
    } catch (IOException e){
        return false;
    }
}

public static int getHostIPAsInt(final String hostname) {
    final InetAddress inetAddress = getHostIP(hostname);
    if (inetAddress==null)
        return 0;

    final byte[] addrBytes = inetAddress.getAddress();
    final int addr = (addrBytes[3]&0xff) << 24
                    | (addrBytes[2]&0xff) << 16
                    | (addrBytes[1]&0xff) << 8
                    |  addrBytes[0]&0xff;
    return addr;

我也尝试了以下相同的结果:

        isInternetWiFi = cm.requestRouteToHost(ConnectivityManager.TYPE_WIFI, serverIP);
        isInternetMobile = cm.requestRouteToHost(ConnectivityManager.TYPE_MOBILE, serverIP);
即使我使用“google.com”,两者都是假的。我觉得当serverIP是负值时总是会失败...但InetAddress不使用serverIP但仍然返回false。
尝试使用模拟器(aos 2.2) 我需要确保服务器能够继续执行应用程序,因为2应用程序的功能取决于服务器(客户端/服务器应用程序)。但我们的想法是检查设备是否使用(通过连接)WiFi,而无法像某些局域WiFi那样真正访问互联网。所以我需要检查第一个服务器是否可以访问,第二个 - 如果它响应。
How2do它?

1 个答案:

答案 0 :(得分:0)

  

我想检查服务器是否可以访问。

然后提出真实的要求。例如,如果您尝试与该Web服务器通信,请从Web服务器请求robots.txt。其他任何东西都不可靠 - 例如,如果Web服务器守护程序崩溃,那么即使它的工作正常,也不会起作用。