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

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

方法一(失败)

要判断一个IP或网站是否能够连接上
自己在子线程中的run方法里使用如下代码:(注意:在主线程使用网络请求一般不被允许,因此使用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()+"";
   }

方法二(成功)

在子线程run方法中引用如下方法

//这里的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

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值