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

Android 尝试确保服务器可访问(主机可访问)时出现问题,android,android-emulator,ip,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 bo

我想检查服务器是否可以访问。在这里找到一个将服务器的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;
即使我使用google.com,两者都是错误的。我有一种感觉,当服务器IP为负值时,它总是失败。。。但是InetAddress不使用serverIP,仍然返回false。 使用模拟器AOS2.2进行尝试。 我需要确保服务器能够继续执行应用程序2,因为应用程序的功能取决于服务器客户端/服务器应用程序。但这个想法是为了检查该设备是否使用了通过WiFi连接的网络,而WiFi并不像某些局域网WiFi那样能够真正接入互联网。所以我需要检查第一个服务器是否可以访问,第二个服务器是否有响应。怎么做

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


然后提出一个真正的要求。例如,如果您试图与Web服务器通信,请从Web服务器请求robots.txt。没有其他东西是可靠的-例如,如果Web服务器守护进程崩溃,您的技术即使有效,也不会起作用。

如果Web服务器守护进程崩溃,这就是我要检查服务器的另一个原因。如果服务器关闭,我的应用程序将无法运行,因为其功能取决于服务器。所以我需要确保服务器能够继续执行应用程序。但FOA的原因是要检查设备是否使用通过WiFi连接的网络,而该网络与某些局域网WiFi没有真正的互联网连接。所以我需要检查第一个服务器是否可以访问,第二个服务器是否有响应。如果服务器不是一个普通的http服务器,意味着某个站点托管,该怎么办?它只是维护一些API功能。在任何情况下,我都不喜欢请求一些文件或其他东西,因为如果服务器关闭,它将导致等待超时。在这段时间里,即使请求进入不同的线程,应用程序也会冻结。这是因为我不能在应用程序中再进一步,而它不会从服务器登录得到任何响应。
        isInternetWiFi = cm.requestRouteToHost(ConnectivityManager.TYPE_WIFI, serverIP);
        isInternetMobile = cm.requestRouteToHost(ConnectivityManager.TYPE_MOBILE, serverIP);