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

新手上路,请多包涵

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

 final URL url = new URL("http://www.google.com");
final URLConnection conn = url.openConnection();
... if we got here, we should have net ...

但是有没有更适合执行该任务的方法, 特别是 如果您需要经常进行 连续检查 并且很可能会丢失互联网连接?

原文由 Chris 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 606
2 个回答

您应该连接到您的实际应用程序需要的位置。否则,您正在测试您是否与某个不相关的地方有联系(在这种情况下是 Google)。

特别是,如果您尝试与 Web 服务通信,并且您可以控制 Web 服务,那么最好使用某种廉价的“获取状态”Web 方法。这样,您就可以更好地了解您的“真实”电话是否可能有效。

在其他情况下,只需打开与应该打开的端口的连接就足够了 - 或发送 ping。 InetAddress.isReachable 很可能是适合您需求的 API。

原文由 Jon Skeet 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

 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;
    }
}

原文由 Marcus Junius Brutus 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题