Maison >Java >javaDidacticiel >Pourquoi mon code Java ne parvient-il pas à envoyer une requête ping aux hôtes autres que Localhost ?

Pourquoi mon code Java ne parvient-il pas à envoyer une requête ping aux hôtes autres que Localhost ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-25 17:42:57357parcourir

Why is My Java Code Failing to Ping Hosts Other Than Localhost?

Dépannage de l'accessibilité de l'hôte à l'aide de Ping en Java

En Java, l'envoi d'une requête ping à une adresse IP peut être effectué à l'aide de la méthode InetAddress.isReachable(). Cependant, il peut parfois rencontrer des problèmes où des hôtes autres que localhost semblent inaccessibles.

Problème d'origine

Considérez l'extrait de code Java suivant :

<code class="java">public static void main(String[] args) throws UnknownHostException, IOException {
    String ipAddress = "127.0.0.1";
    InetAddress inet = InetAddress.getByName(ipAddress);

    System.out.println("Sending Ping Request to " + ipAddress);
    System.out.println(inet.isReachable(5000) ? "Host is reachable" : "Host is NOT reachable");

    ipAddress = "173.194.32.38";
    inet = InetAddress.getByName(ipAddress);

    System.out.println("Sending Ping Request to " + ipAddress);
    System.out.println(inet.isReachable(5000) ? "Host is reachable" : "Host is NOT reachable");
}</code>

Le résultat de ce code est :

Sending Ping Request to 127.0.0.1
Host is reachable
Sending Ping Request to 173.194.32.38
Host is NOT reachable

Ce résultat suggère que le ping de localhost a réussi, mais que les autres hôtes sont inaccessibles.

Explication de la solution

Selon la méthode InetAddress.isReachable() dans la documentation Java :

"... Une implémentation typique utilisera les REQUESTS ICMP ECHO si le privilège
peut être obtenu, sinon elle tentera d'établir une connexion TCP
sur le port 7 (Echo) de l'hôte de destination..."

L'option n°1 (utilisant les REQUESTS ICMP ECHO) nécessite généralement des privilèges administratifs (root). Si ces privilèges ne sont pas accordés, la méthode tentera d'utiliser TCP pour déterminer l'accessibilité.

Conclusion

Lorsque vous rencontrez des problèmes avec des hôtes de ping autres que localhost, il est possible que Les privilèges ICMP ne sont pas accordés. S'assurer que les privilèges nécessaires sont accordés peut résoudre l'erreur Hôte non joignable.

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!

Déclaration:
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