2015-02-04 2 views
0

У меня есть небольшой проект, который нуждается в подключении к Интернету. К сожалению, мой интернет время от времени. Затем он выбрасывает исключение:Как проверить подключение к Интернету с помощью java

«java.net.SocketException: сеть недостижима»

...

Моя идея была, чтобы проверить подключение к Интернету, прежде чем я сделать любую операцию, и если это вниз, просто подождите несколько секунд и повторите попытку, пока он не будет работать. Но это исключает одно и то же исключение.

Мой код:

 URL url = new URL("https://www.google.com"); 
     URLConnection conn = url.openConnection(); 


     InetAddress check = InetAddress.getByName("www.google.com"); 

     while (check.isReachable(3000)) { 
      wait(5000); 
     } 
+0

Исключение * - это указание, что ваше интернет-соединение не работает, просто действуйте соответствующим образом в своем коде. – Durandal

+0

попробуйте "try-catch" block in while loop. –

+0

не знаю как. – NaughtyMike

ответ

0

Это может быть то, что вы ищете. Если исключение выбрано или isReachable является ложным, цикл будет продолжать проверку, но как только он isReachable верен, цикл завершится.

URL url = new URL("https://www.google.com"); 
    URLConnection conn = url.openConnection(); 

    InetAddress check = InetAddress.getByName("www.google.com"); 

     while (true) { 
      try { 
       boolean isReachable = check.isReachable(3000); 
       if (isReachable) { 
        break; 
       } 
      } catch (Exception e) { 
       wait(5000); 
      } 
     } 
+0

Он отлично выглядит, и я понимаю, как он должен работать. Но это не так. Когда соединение доступно, цикл все еще повторяется. Он не выпрыгивает из него ... :(Почему? – NaughtyMike

+0

Метод кажется ненадежным см. В этом сообщении: http://stackoverflow.com/questions/9922543/why-does-inetaddress-isreachable-return-false- когда-я-могу-пинг-заместитель IP-адрес – crabe

Смежные вопросы