我看到这个问题以前在SO中被问过。一些线程是:
- How to check if internet connection is present in java .
- Detect internet Connection using Java .
- Why does InetAddress.isReachable return false, when I can ping the IP address? .
所有这些线程都很旧了。那里定义的方法有:
- 通过
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;
}
}
通过这种方式我得到了正确的输出。上述线程提到没有正确的方法来验证计算机是否连接到互联网。 但是由于这些线程已经很旧了,所以我希望可能有一些新的方法可以实现我想要的。此外,我还必须考虑有多种方法可以访问互联网(例如 LAN),宽带、拨号、DSL 等,某些服务器可能会阻止 ping 访问或阻止某些 IP。
任何指针都会非常有帮助。
最佳答案
您可以使用 NetworkInterface 类,它有一个 isUp() 方法,该方法返回 boolean 值,指示特定接口(interface)是否已启动并正在运行(这可以指示它是否用于互联网连接)。
API:http://docs.oracle.com/javase/7/docs/api/java/net/NetworkInterface.html
关于java - 如何检查电脑是否已连接到互联网?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23218830/