我想检查服务器是否可访问。在此处找到一个示例,将服务器的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。答案 0 :(得分:0)
我想检查服务器是否可以访问。
然后提出真实的要求。例如,如果您尝试与该Web服务器通信,请从Web服务器请求robots.txt
。其他任何东西都不可靠 - 例如,如果Web服务器守护程序崩溃,那么即使它的工作正常,也不会起作用。