首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检查Java中是否存在互联网连接?

如何检查Java中是否存在互联网连接?
EN

Stack Overflow用户
提问于 2009-09-09 20:49:01
回答 16查看 118.8K关注 0票数 68

如何检查是否可以通过java连接到互联网?一种方法是:

代码语言:javascript
复制
final URL url = new URL("http://www.google.com");
final URLConnection conn = url.openConnection();
... if we got here, we should have net ...

但是,有没有更合适的执行该任务,,特别是,如果你需要做连续检查非常频繁,并失去互联网连接的可能性很高?

EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2009-09-09 20:52:31

您应该连接到您的实际应用程序需要的位置。否则,你就是在测试你是否与某个不相关的地方(本例中是Google)建立了连接。

特别是,如果您正在尝试与web服务对话,并且您控制着web服务,那么使用某种廉价的“获取状态”web方法将是一个好主意。这样,你就能更好地了解你的“真正”通话是否可能奏效。

在其他情况下,只需打开一个到应该打开的端口的连接就足够了-或者发送一个ping。在这里,InetAddress.isReachable可能是一个适合您需要的API。

票数 53
EN

Stack Overflow用户

发布于 2014-04-08 23:05:48

您基本上提供的代码加上对connect的调用应该就足够了。所以,是的,可能只是Google不可用,但你需要联系的其他网站上有,但这种可能性有多大?此外,这段代码应该只在你实际无法访问外部资源时执行(在catch块中,试图找出失败的原因),所以我想说的是,如果你感兴趣的外部资源都不可用,那么很可能你有网络连接问题。

代码语言:javascript
复制
private static boolean netIsAvailable() {
    try {
        final URL url = new URL("http://www.google.com");
        final URLConnection conn = url.openConnection();
        conn.connect();
        conn.getInputStream().close();
        return true;
    } catch (MalformedURLException e) {
        throw new RuntimeException(e);
    } catch (IOException e) {
        return false;
    }
}
票数 25
EN

Stack Overflow用户

发布于 2009-09-10 00:02:23

人们建议使用INetAddress.isReachable。问题是一些站点将其防火墙配置为阻止ICMP Ping消息。因此,即使web服务是可访问的,"ping“也可能失败。

当然,反之亦然。即使may服务器关闭,主机也可能对ping作出响应。

当然,由于本地防火墙的限制,机器可能无法直接连接到某些(或所有) web服务器。

根本的问题是“可以连接到互联网”是一个定义不明确的问题,这种事情很难在没有的情况下进行测试:

有关用户计算机和“本地”网络环境的and

  • information信息,以及有关应用程序需要访问的内容的
  1. 信息。

因此,一般来说,最简单的解决方案是让应用程序尝试访问它需要访问的任何内容,然后依靠人类的智能来进行诊断。

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

https://stackoverflow.com/questions/1402005

复制
相关文章

相似问题

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