我有一个每10分钟运行一次的java应用程序。因此,每当线程开始执行时,我必须检查是否存在互联网连接。所以我正在使用Socket类。但问题是如果线路没有连接到我的系统,套接字类工作正常。对我来说,如果我插上电线,那么我有局域网,但没有互联网。在这种情况下,套接字类无法抛出错误。这是我的代码 -
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);
}
我在这里检查了代码 - Detect internet Connection using Java。但是使用getContent()没有帮助。
答案 0 :(得分:1)
你试过吗?
boolean hasInternetAccess = InetAddress.getByName("www.google.com").isReachable();
答案 1 :(得分:1)
您应该尝试连接到您需要连接的任何内容,并在发生故障时处理它。没有成功的神奇预测。
答案 2 :(得分:0)
两个答案。
这个链接背后的代码很好。您基本上需要从URL接收数据以确保它真的可以访问。我还要配置与setUseCaches(false)
的连接
你的前期检查对你没有帮助。您仍然可以在程序中途松开连接。所以,让你的代码运行。当它检测到连接问题时,优先打印出错误给用户。