Dépannage du problème de ping dans Java
Lors d'une tentative de ping sur une adresse IP à l'aide de Java, certains utilisateurs peuvent rencontrer un problème d'accessibilité de l'hôte local. mais tous les autres hôtes renvoient un message « L'hôte n'est PAS accessible ». Cet article explore la cause sous-jacente et propose une solution possible.
Illustration du code
L'extrait de code fourni tente d'envoyer une requête ping à deux adresses IP : localhost (127.0.0.1) et une adresse externe (173.194.32.38). La méthode isReachable() renvoie true si l'hôte est joignable dans le délai spécifié (5 000 millisecondes), sinon false.
Cause première
Selon la documentation Java, la méthode isReachable() utilise généralement des REQUETES d'ÉCHO ICMP pour déterminer l'accessibilité de l'hôte. Cependant, l'utilisation d'ICMP nécessite souvent des privilèges élevés (autorisations root).
Solution
Option n°1 : obtenir des privilèges administratifs
Si ICMP n'est pas bloqué par le pare-feu du système, le problème peut être que le code ne s'exécute pas avec les autorisations suffisantes pour effectuer des opérations ICMP. Essayez d'exécuter le programme avec des privilèges administratifs.
// Windows > runas /profile /user:administrator java -jar myapp.jar // Unix/Linux > sudo java -jar myapp.jar
Si ICMP est bloqué, la deuxième option consiste à utiliser TCP à la place.
Option n°2 : Activer le ping TCP
<code class="java">// This example uses the Google DNS server String ipAddress = "173.194.32.38"; try { Socket socket = new Socket(); socket.connect(new InetSocketAddress(ipAddress, 80), 5000); System.out.println("Host " + ipAddress + " is reachable"); } catch (IOException e) { System.out.println("Host " + ipAddress + " is NOT reachable"); }</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!