Проверить подключение к интернету в 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. Ваша предварительная проверка не поможет вам. Вы все еще можете потерять связь на полпути к вашей программе. Итак, просто позвольте вашему коду работать. При обнаружении проблемы с подключением распечатайте сообщение об ошибке для пользователя.