Java 如何检查计算机是否已连接到internet?
我已经看到这个问题以前在SO中被问过。一些线程是:Java 如何检查计算机是否已连接到internet?,java,networking,Java,Networking,我已经看到这个问题以前在SO中被问过。一些线程是: 这些线都很旧了。此处定义的方法有: 通过openConnection()打开HttpURLConnection 正在检查InetAddress.isReachable 通过Process执行ping命令并处理输出 我已经看到,如果我使用第二种方法检查与www.google.com的连接,那么它将返回false,这不应该是结果。但第一种方法是有效的。我不能用最后一种方式,因为被告自己说了 我也看到了以下方式: private boo
- 通过
打开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<但是由于这些线程是旧的,所以我希望能有一些新的方法来实现我想要的。我还必须考虑到访问局域网、宽带、拨号、DSL等各种方式,有些服务器可能会阻止ping访问,或者可以阻止一些IP。
任何指针都会非常有用 您可以使用NetworkInterface类,它有一个isUp()方法,该方法返回布尔值,指示特定接口是否已启动并正在运行(这可能指示它是否用于internet连接)
API:一般来说,没有“连接到互联网”这样的东西。您只能检查您尝试访问的主机/端口组合(或IP地址)是否可访问。如果是,则不保证可以访问任何其他主机/端口。考虑一下像中国的防火墙这样的东西。你在那里时是否连接到“Internet”上?如果DNS服务器设置不正确,尝试连接到google.com可能会失败。而ping一个IP地址可能更安全。最好的选择是DNS服务器,它们很少更改IP地址,而且非常可靠。例如Google DNS:8.8.8.8。感谢您的回复。到目前为止,我知道NetworkInterface检查设备是否正常工作,而不是连接。可能是假阳性。是的,真的。虽然我发现这个网站(从一月份开始,相当新)有一些检查互联网连接的代码