-
Réaliser un ping
Bonjour,
J'aimerai faire un ping sur un serveur,pour cela j'utilise :
Code:
status = InetAddress.getByName(host).isReachable(timeOut);
avec un timeOut=10000;
Mais le ping n'aboutit pas et la valeur de mon statut est false. Lorsque je réalise le meme ping avec l'invite de commande, cette fois si il est réalisé correctement.
Pouvez vous me dire si mon problème vient du code ou du PC?
Merci d'avance
-
quel système d'exploitation? Suivant le système d'exploitation, le user peut, ou pas, avoir les droits pour créer les paquets ICMP. Si ce n'est pas le cas, java se base alors sur le protocole echo (TCP/IP port 7), qui n'est pas nécessairement supporté de la même manière par le serveur que les pings ICMP.
-
Le système que j'utilise actuellement est windows XP (pack 2). J'ai déjà désactivé le par feu mais je sais pas s'il avait une réel incidence sur le fonctionnement de mon programme.
Edit: Après avoir fait plusieurs tests, j'ai remarqué que les ping que je réalise marche en local seulement. J'ai essayé de faire un ping sur ma passerelle et ça n'a pas marché.
-
Voici du nouveau:
-J'ai essayé de réaliser des pings avec l'invite de commande et tous fonctionne nickel.
-Les pings que j'envoie de mon programme ne marche que en local, j'ai donc essayé de chercher du coté des réglages de windows XP familliale (pack 2). J'ai activé une option du pare feu qui m'autorise une requète d'echo rentrante. Mais ça ne marche toujours pas.
Est ce que je dois chercher une autre méthode pour réaliser mes pings?
-
quand tu lance ton ping depuis java, sniffe un peu ce qui se passe sur l'interface réseau (avec des outils comme wireshark). Si tu vois passer des paquets ICMP ping -> java ok et a les droit. Si tu vois pas de ping icmp, mais une appel au protocole ping en TCP/IP -> java n'a pas les droit.
Ce n'est pas parce que tu y arrive avec la commande "ping" que java a les droits pour faire des paquets ICMP. Les commandes système on souvent des droits bien à elles.
Un autre test c'est de lancer ton application java en tant qu'admin de la machine et non pas utilisateur (même privilégié)
-
Je viens de faire les tests et en effet lorsque je lance java, le protocole ping est fait appel en TCP. Comment faire pour que java ai les droits?
Sinon pour le second test qui consistait à exécuter l'application en tant qu'administrateur, je ne sais pas comment faire. Mon compte est déjà administrateur donc toutes les applications que je lance devrait être lancé en tant qu'administrateur. J'ai essayé de lancer l'invite de commande en tant qu'administrateur en faisant un clique droit dessus, mais cette option n'existe pas.
-
faut regarder dans les détails de la gestion de droit du compte en question, mais là je connais pas assez windows. Je sais que sous les ancienne version de linux il y avait un problème similaire, il a fallu attendre un upgrade du noyaux qui autorisais quand même les paquets ping.
L'autre solution c'est de configurer la machine cible pour qu'elle réponde aux protocole echo ;)
-
Je n'ai pas accès à la machine cible et j'ai déjà fait beaucoup de recherche pour essayer de paramètrer windows XP mais sans succès.
Y a t il d'autre méthode pour réaliser un ping en java?
-
a moins de viser un protocole précis (http, ftp ou autre), non
-
Merci pour ton aide, je vais voir si je ne trouve pas un autre moyen de réaliser des requêtes pings.
-
J'ai du nouveau!
J'ai essayé de tester mon programme à nouveau mais cette fois j'ai fait une requête ping auprès du site "www.developpez.com" et ça marche!!!!
Je re essayé de faire une requete sur google et la ça ne marche pas. Maintenant je comprends vraiment plus rien.
Pourquoi est ce que je peux émettre une requête ping sur certains sites?
-
comme déjà dit, java utilise 2 protocole. Si www.developpez.com est le seul à répondre au deuxième (protocole echo port 7) et que le ping classique (ICMP) est interdit, tu ne saura faire un reachable que sur developpez.com