Android 使用 InetAddress 判断指定主机是否能够链接

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

如果有谁能够知道第一个怎么回事,希望不吝赐教

上一篇:Web 安全之 XSS 攻击与防御


下一篇:JAVA网络编程6