检查java中的internet连接
我有一个java应用程序,每10分钟运行一次。因此,每当线程开始执行时,我必须检查是否存在internet连接。所以我使用了Socket类。但是这里的问题是,如果电线没有连接到我的系统,socket类可以正常工作。对我来说,如果我插上电线,那么我有局域网,但没有互联网。在这种情况下,套接字类无法抛出错误。这是我的密码-检查java中的internet连接,java,sockets,urlconnection,Java,Sockets,Urlconnection,我有一个java应用程序,每10分钟运行一次。因此,每当线程开始执行时,我必须检查是否存在internet连接。所以我使用了Socket类。但是这里的问题是,如果电线没有连接到我的系统,socket类可以正常工作。对我来说,如果我插上电线,那么我有局域网,但没有互联网。在这种情况下,套接字类无法抛出错误。这是我的密码- Socket socket = null; try { socket = new Socket("www.google.com", 80);
Socket socket = null;
try {
socket = new Socket("www.google.com", 80);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (socket != null) try { socket.close();
}
catch(IOException e) {
e.printStackTrace();
}
System.exit(0);
}
我在这里签出了代码-。但是使用getContent()没有帮助。您尝试过吗
boolean hasInternetAccess = InetAddress.getByName("www.google.com").isReachable();
您应该尝试连接到您需要连接的任何设备,并在故障发生时进行处理。成功没有神奇的预兆。两个答案。 1.链接背后的代码是好的。您基本上需要从URL接收数据,以确保它确实是可访问的。我还将使用
setUseCaches(false)
2.你的预先检查对你没有帮助。您仍然可以在程序运行到一半时断开连接。所以,让你的代码运行吧。当它检测到连接问题时,将错误优雅地打印出来给用户作为结束。与您的问题无关,但您应该知道,如果catch调用
System.exit(0)
(至少在Java7中),则不会执行finally
部分。这总是返回false