首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查互联网连接- Android

问检查互联网连接- Android
EN

Stack Overflow用户
提问于 2015-12-26 11:21:28
回答 1查看 1.7K关注 0票数 6

我知道这个问题已经问过几次了,比如这里和这里,但是在检查网络连接性时,我仍然没有通过做类似于这的事情来获得预期的结果。

isAvailable()和网络信息的isConnected()方法都给出了当I连接到目前没有互联网连接的Wi路由器时,布尔真的结果。

这是我手机的屏幕截图,它可以检测到手头的情况。

​

确保电话/应用程序实际连接到internet的唯一方法是在尝试请求时轮询/ping资源以检查连接性或处理异常吗?

EN

回答 1

Stack Overflow用户

发布于 2019-01-10 05:53:54

如@Levit所述,显示了两种检查网络连接/ Internet接入的方法

--平a服务器

代码语言:javascript
复制
// ICMP 
public boolean isOnline() {
    Runtime runtime = Runtime.getRuntime();
    try {
        Process ipProcess = runtime.exec("/system/bin/ping -c 1 8.8.8.8");
        int     exitValue = ipProcess.waitFor();
        return (exitValue == 0);
    }
    catch (IOException e)          { e.printStackTrace(); }
    catch (InterruptedException e) { e.printStackTrace(); }

    return false;
}

--连接到因特网上的套接字(高级)

代码语言:javascript
复制
// TCP/HTTP/DNS (depending on the port, 53=DNS, 80=HTTP, etc.)
public boolean isOnline() {
    try {
        int timeoutMs = 1500;
        Socket sock = new Socket();
        SocketAddress sockaddr = new InetSocketAddress("8.8.8.8", 53);

        sock.connect(sockaddr, timeoutMs);
        sock.close();

        return true;
    } catch (IOException e) { return false; }
}

第二种方法非常快(不管怎样),工作在所有的设备上,非常可靠。但是不能在UI线程上运行。

这里的细节

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34470835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档