繁体   English   中英

如何检查计算机是否已连接到互联网?

[英]How to check if the computer is connected to the internet?

我已经看到在SO中曾经问过这个问题。 一些线程是:

所有这些线程都相当老。 定义的方法有:

  • 通过openConnection()打开HttpURLConnection
  • 检查InetAddress.isReachable
  • 通过Process执行ping命令并处理输出。

我已经知道,如果我使用第二种方法来检查与www.google.com的连接,那么它将返回false,这不应是结果。 但是第一种方法可行。 自从受访者本人说过后,我就无法使用最后一种方式。

我也看到了以下方式:

private boolean isConnected(Socket socket, String address) {
    if(socket == null) {
        throw new NullPointerException("Socket cannot be null");            
    }

    try {
        InetSocketAddress inetSocketAddress = new InetSocketAddress(address, 80);
        socket.connect(inetSocketAddress);
        return true;
    } catch (Throwable cause) {
        LOGGER.error(cause.getMessage(), cause);
        return false;
    }
}

通过这种方式,我得到正确的输出。 前面提到的线程提到没有正确的方法来验证计算机是否已连接到Internet。 但是由于这些线程很旧,所以我希望可能有一些新的方法可以实现我想要的目标。 我还必须考虑到有多种访问Internet的方式,例如LAN,宽带,拨号,DSL等,并且某些服务器可能会阻止ping访问或可以阻止某些IP。

任何指针都将非常有帮助。

您可以使用NetworkInterface类,它具有isUp()方法,该方法返回boolean,以指示特定接口是否已启动并正在运行(这可以指示该接口是否用于Internet连接)。

API: http : //docs.oracle.com/javase/7/docs/api/java/net/NetworkInterface.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM