Проверить подключение к интернету в Java

У меня есть Java-приложение, которое запускается каждые 10 минут. Поэтому, когда поток начинает выполняться, я должен проверить, есть ли подключение к Интернету или нет. Так что я использовал класс 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);
     }

Я проверил код здесь - Обнаружение интернет-соединения с помощью Java. Но использование getContent() не помогает.

3 ответа

Вы должны просто попытаться подключиться к тому, к чему вам нужно подключиться, и обработать сбой по мере его возникновения. Нет волшебного предсказателя успеха.

Ты пытался?

boolean hasInternetAccess  = InetAddress.getByName("www.google.com").isReachable();

Два ответа. 1. Код ссылки хороший. Вам нужно получать данные с URL-адреса, чтобы быть уверенным, что он действительно доступен. Я бы дополнительно настроил соединение с setUseCaches(false)2. Ваша предварительная проверка не поможет вам. Вы все еще можете потерять связь на полпути к вашей программе. Итак, просто позвольте вашему коду работать. При обнаружении проблемы с подключением распечатайте сообщение об ошибке для пользователя.

Другие вопросы по тегам