Android 尝试确保服务器可访问(主机可访问)时出现问题
我想检查服务器是否可以访问。在这里找到一个将服务器的IP作为整数值的示例。我试图在活动中以以下方式检查它: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
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);