Maison > Java > javaDidacticiel > le corps du texte

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

Mary-Kate Olsen
Libérer: 2024-10-25 17:42:57
original
266 Les gens l'ont consulté

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

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

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!

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!