IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Ping en JAVA avec ICMP


Sujet :

Entrée/Sortie Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 11
    Points : 3
    Points
    3
    Par défaut Ping en JAVA avec ICMP
    Bonjour à tous,

    ma question est la suivante, j'essaie de recueillir le TTL d'un ping dans une application java que j'ai dévellopée.

    Pour cela j'utilise InetAdress.isreachable.

    Cela fonctionne mais les temps obtenus sont énormes (>5s pour le ping de free)

    Après des recherches, j'ai découvert que .isreachable tente un ICMP request, puis si cela ne fonctionne pas, elle tente un Echo TCP sur le port 7.

    Je suppose donc que isreachable n'arrive pas a effectuer une ICMP request et utilise la seconde solution.

    Ma question est donc la suivante: comment puis-je faire pour que la méthode utilisant ICMP fonctionne? sachant que le ping fonctionne sous DOS et que j'ai désactivé le pare-feu du PC.

    Merci d'avance pour votre aide

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Je crois que tu confond le TTL (nombre de sauts) et le délai de réponse. On peux voir ton code qui conclue aux 5 secondes?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    En effet je voulais parler du temps de réponse .

    J'ai attaché mon code en pièce jointe. Merci de ton aide tchize_
    Fichiers attachés Fichiers attachés

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Quand je vois çà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    for (int i = 2000; i < 5000; i += 100) {
     
     
     
    					ping = target.isReachable(i);
     
     
     
    					if (ping) setDisplay("\nPing OK < " + i + " micro secondes");
     
    					else setDisplay("\nPing NOK > " + i + " micro secondes");
     
     
     
     
     
    					if (ping == true){
     
    						setValPing(i);
     
    						return ping;
     
    					}
     
     
     
     
     
    				}
    J'ai l'impression que t'as pas lu la doc de isReachable. Le timeout ce sont des millisecondes, pas des microsecondes. de plus c'est pas un timeout au niveau de la couche ip, mais un timeout software (le software attends autant de temps, à peu près, la réponse. En utilisant ce code avec un boucle commencant à 1 par pas de 1 sur www.free.fr j'obtiens 1milli seconde, jamais plus. Je me demande d'ailleurs comment java obtiens sa réponse en 1 milliseconde (temps réel mesuré avec System.getcurrenttimemillis) alors que mon ping systèmle demande 25 ms :s

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Si j'ai bien lu la doc, et en effet je me suis trompé dans l'affichage en écrivant microsecondes, certes... Mais là n'étais pas ma question, je voulais juste savoir pourquoi j'obtenais des résultats de l'ordre de la seconde...

    Si je je descend en dessous de 3000ms, www.free.fr n'est jamais reachable.

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Ca doit venir de chez toi. Chez moi, avec free.fr j'ai des réponses de l'ordre de
    26ms et au boulot c'est de l'ordre de 1ms

    Soit tu as un firewall qui bloque les paquet icmp, soit free.fr bloque ton FAI. Si le icmp ping échoue au delà d'un certain délai, java va utiliser le port TCP numéro 7, un service de ping dispo sur certains serveur, mais pas tous.

    Ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class Test{
    public static void main(String[] argv) throws Exception{
        for (int i=0; i< 200; i+=1+(i/5))
        System.out.println("reachable? "+i+" -> "+java.net.InetAddress.getByName("www.free.fr").isReachable(i));
    }
    }
    Me donne ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    reachable? 0 -> false
    reachable? 1 -> false
    reachable? 2 -> false
    reachable? 3 -> false
    reachable? 4 -> false
    reachable? 5 -> false
    reachable? 7 -> false
    reachable? 9 -> false
    reachable? 11 -> false
    reachable? 14 -> false
    reachable? 17 -> false
    reachable? 21 -> false
    reachable? 26 -> false
    reachable? 32 -> true
    reachable? 39 -> true
    reachable? 47 -> true
    reachable? 57 -> true
    reachable? 69 -> true
    reachable? 83 -> true
    reachable? 100 -> true
    reachable? 121 -> true
    reachable? 146 -> true
    reachable? 176 -> true
    Que sort-il chez toi?

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Je viens d'essayer avec ton code et j'ai une réponse à 4765ms. Je vais tenter depuis une autre liaison ce soir et je te tiens au courant. C'est très étonnant car je n'ai aucun firewall qui bloque les ICMP, c'est donc peut-être free qui bloque mon FAI...

    Je te tiens au courant

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Petite question, lorsque je teste depuis ma console DOS, j'obtient bien uen réponse < 40ms, cela veut dire que Free ne bloque pas mon FAI non?

    Ce test exclu tout problème réseau non?

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    effectivement. Quel version de java utilise-tu? Il est possible aussi que java n'ai pas les droit pour créer des socket icmp, ce qui fait qu'il se rabat sur le port 7. Es-tu administrateur de la machine?

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Oui je suis administrateur sur mon poste, sais tu ou je peux modifier ce paramètre pour donner les droits à java de création de socket ICMP?

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    et la version de mon JRE est 1.6.15

Discussions similaires

  1. Réponses: 5
    Dernier message: 15/02/2005, 10h32
  2. [Plugin][Débutant] Lancement d'une appli Java avec un plugin
    Par antares24 dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 29/07/2004, 14h18
  3. Communication C-Java avec Orbit
    Par damsh dans le forum CORBA
    Réponses: 4
    Dernier message: 05/06/2004, 00h24
  4. Exécutable Java avec JRE intégré
    Par clawhammer dans le forum JBuilder
    Réponses: 2
    Dernier message: 06/10/2003, 16h26
  5. Réponses: 2
    Dernier message: 26/05/2003, 19h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo