2013-08-17 3 views
3

J'ai une application Java qui s'exécute toutes les 10 minutes. Donc, à chaque fois que le thread commence à s'exécuter je dois vérifier s'il y a une connexion internet ou non. Donc j'utilisais la classe Socket pour ça. Mais le problème ici est que la classe de socket fonctionne bien si le fil n'est pas connecté à mon système. Pour moi si je branche dans le fil alors j'ai LAN mais pas internet. Dans ce cas, la classe socket ne parvient pas à générer une erreur. Voici mon code -vérifier la connectivité Internet en Java

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); 
    } 

J'ai vérifié le code ici - Detect internet Connection using Java. Mais l'utilisation de getContent() n'aide pas.

+0

Non lié à votre problème mais vous devez savoir que la section 'finally' ne sera pas exécutée si catch invoquera' System.exit (0) '(au moins dans Java7). – Pshemo

Répondre

1

Avez-vous essayé?

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

cela retourne toujours faux – Dan

1

Vous devez simplement essayer de vous connecter à tout ce dont vous avez besoin pour vous connecter, et gérer la panne lorsqu'elle se produit. Il n'y a pas de prédicteur magique du succès.

0

Deux réponses. 1. Le code derrière le lien est bon. Vous devez essentiellement recevoir des données d'une URL pour vous assurer qu'elles sont vraiment accessibles. Je voudrais en outre configurer la connexion avec setUseCaches(false) 2. Votre vérification à l'avance ne vous aide pas. Vous pouvez toujours perdre la connexion à mi-chemin de votre programme. Alors, laissez votre code s'exécuter. Quand il détecte un problème de connexion imprimer l'erreur à l'utilisateur une fin gracieusement.

Questions connexes