3

我有一个每 10 分钟运行一次的 java 应用程序。所以每当线程开始执行时,我必须检查是否有互联网连接。所以我为此使用了 Socket 类。但是这里的问题是,如果电线没有连接到我的系统,套接字类可以正常工作。对我来说,如果我插上电线,那么我有 LAN 但没有互联网。在这种情况下,套接字类无法引发错误。这是我的代码 -

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() 并没有帮助。

4

3 回答 3

1

你有没有尝试过?

boolean hasInternetAccess  = InetAddress.getByName("www.google.com").isReachable();
于 2013-08-17T18:33:15.463 回答
1

您应该尝试连接到您需要连接的任何东西,并在发生故障时处理它。成功没有神奇的预测。

于 2013-08-18T06:50:01.587 回答
0

两个答案。1.链接后面的代码不错。您基本上需要从 URL 接收数据以确保它确实可以访问。我还会另外配置与setUseCaches(false) 2 的连接。您的预先检查对您没有帮助。您仍然可以在程序中途断开连接。所以,让你的代码运行。当它检测到连接问题时,优雅地向用户打印出错误。

于 2013-08-18T07:25:02.270 回答