[英]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.