Android 使用 InetAddress 判断指定主机是否能够链接
方法一(失败)
要判断一个IP或网站是否能够连接上
自己在子线程中使用如下代码:(注意:在主线程使用网络请求一般不被允许,因此使用InetAddress 会导致报错)
//根据主机名称获得主机名称对象
InetAddress host = InetAddress.getByName("www.baidu.com");
//检查该主机在规定的时间内能否连上
boolean isReachable = host.isReachable(5000);
/**
*注意这里一直链接失败,直接使用java写一个测试类能够链接远程主机,但是在Android中不能链接,
*未寻找到原因。。。。。。
*/
String desc = "";
if(isReachable){//可以链接
desc = String.format("%s\n 主机名为%s\n 主机地址为%s \n当前时间为%s",
desc,host.getHostName(),host.getHostAddress(),DateUtil.getNowTime());
}else {
desc = "无链接,当前时间为:"+ DateUtil.getNowDateTime()+"";
}
方法二(成功)
在子线程中引用如下方法
//这里的path 可以设置为 “www.baidu.com” 端口设置为 80
public static boolean isOnline(String path,int port) {
try {
int timeoutMs = 1500;
Socket sock = new Socket();
SocketAddress sockaddr = new InetSocketAddress(path, port);
sock.connect(sockaddr, timeoutMs);
sock.close();
return true;
} catch (IOException e) { return false; }
}
结果
是否链接上:true
如果有谁能够知道第一个怎么回事,希望不吝赐教