Dépannage d'une erreur d'hôte inaccessible lors du ping d'adresses IP en Java
L'extrait de code donné vise à envoyer une requête ping à une adresse IP, mais le programme rencontre des problèmes lorsque vous tentez d'envoyer une requête ping à des hôtes autres que localhost. Bien que la désactivation du pare-feu supprime vraisemblablement les restrictions réseau, le code ne parvient pas à envoyer un ping efficace à l'hôte distant.
La racine de ce problème réside dans le fait que la méthode InetAddress.isReachable() utilise différents mécanismes pour déterminer l'accessibilité de l'hôte en fonction sur la disponibilité des privilèges, comme indiqué dans la documentation Java :
"Une implémentation typique utilisera les REQUETES 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."
Dans la plupart des cas, les REQUETES ICMP ECHO sont utilisées pour vérifier l'accessibilité de l'hôte. Cependant, l'utilisation d'ICMP nécessite des privilèges administratifs (root) dans de nombreux systèmes d'exploitation. Sans ces privilèges, la méthode reviendra à l'établissement d'une connexion TCP sur le port 7.
Pour résoudre ce problème, assurez-vous que le programme dispose de privilèges suffisants pour effectuer des REQUETES d'ÉCHO ICMP. Si cela n'est pas réalisable, envisagez d'utiliser des méthodes alternatives pour les tests d'accessibilité de l'hôte qui ne reposent pas sur ICMP.
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!