Maison > Java > javaDidacticiel > Pourquoi mon programme Java ne peut-il pas envoyer de requête ping à des hôtes autres que Localhost ?

Pourquoi mon programme Java ne peut-il pas envoyer de requête ping à des hôtes autres que Localhost ?

Susan Sarandon
Libérer: 2024-10-25 09:09:02
original
605 Les gens l'ont consulté

Why Can't My Java Program Ping Hosts Other Than Localhost?

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
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal