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

Langage Java Discussion :

Method IsReachable() pour java 1.4


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2009
    Messages : 6
    Par défaut Method IsReachable() pour java 1.4
    Bonjour,

    Je souhaiterais savoir comment palier à l'absence de la méthode IsReachable(int)
    de InetAddress quand on a une version de Java en 1.4 ?

    En effet, cette méthode a été implémentée à partir de Java 1.5, et j'ai besoin de
    tester la disponibilité d'une machine (en l'occurrence "pingé" un LDAP) avant d'y faire des tests de connexion.

    Merci d'avance de vos réponses... (autres que "passe en 1.5" )

    Cordialement

  2. #2
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Salut.

    Passe en Java 6.


    Blagues à part, as tu absolument besoin de spécifier un timeout?

    Si non, j'ai une méthode pour faire cela.

    Il suffit d'essayer d'ouvrir une socket sur un port quelconque de la machine cible (exemple, le port echo 7).

    Que le port accepte ou non les connexions à peu d'importance, sachant que ce qui intéresse, c'est le fait que la machine cible soit trouvée.



    En effet, tenter d'ouvrir une socket sur une machine non trouvée dans le réseau renvoie une UnknownHostException.

    En revanche, tenter d'ouvrir une socket sur un port fermé d'une machine en ligne sur le réseau renvoie une ConnectException.

    Ainsi si tu obtiens une exception UnknownHostException, tu sais que ta machine est non pingable.

    Si tu obtiens une exception de type ConnectException, tu sais que la machine a été trouvée sur le réseau et est donc pingable, mais que le port test est fermé (ce dont tu te fiches).

    Enfin, si tu n'obtiens pas d'erreur, ça veut dire que la machine a été trouvée et que le port de test est ouvert donc on retombe dans le cas de la machine pingable.

    A partir de là, il est facile d'écrire une méthode qui fasse le tri entre ces cas d'erreurs :

    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
     
    public boolean isReachable(String inetAddress) {
    		boolean isReachable = false;
    		try {
                            //tentative d'ouverture de socket sur le port echo de la machine passée en paramètre
    			Socket t = new Socket(inetAddress, 7);
    			//connection réussie, on renvoie true
    			isReachable = true;
    			t.close();
    		} catch (ConnectException e) {
    			// la connexion est refusée mais l'hôte existe et est pingable, on
    			// renvoie true
    			isReachable=true;
    		} catch (UnknownHostException e) {
    			// l'hôte est inconnu donc non pingable, on renvoie false
    			isReachable=false;
    		} catch (IOException e) {
    			// autres exception liées à socket
    			//ne devrait pas se produire
    			e.printStackTrace();
    		}
    		return isReachable;
    	}

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2009
    Messages : 6
    Par défaut
    Merci de la réponse,

    Ta technique m'a l'air correcte et faisable
    Je tente ça demain et vous tiens au courant.

    Lucas

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2009
    Messages : 6
    Par défaut
    Bon, c'est cool, avec mes tests, ça à l'air de fonctionner !

    Maintenant il n'y a plus qu'à tester en prod...

    Le seul truc qui m'embête, c'est si le LDAP nominal est gelé (donc reste pingable), ça ne basculera pas sur le LDAP de Backup...

    Je vous tiens au courant des différents cas.

    Merci

    Lucas

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2009
    Messages : 6
    Par défaut
    Merci de votre aide.

    A bientôt pour de nouvelles énigmes...

    Lucas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Votre EDI préferé pour Java (2003-2004) ?
    Par christopheJ dans le forum EDI et Outils pour Java
    Réponses: 73
    Dernier message: 17/10/2005, 17h05
  2. glut pour Java
    Par Daedar dans le forum GLUT
    Réponses: 8
    Dernier message: 30/05/2005, 15h22
  3. Quel outil pour diagrame UML pour Java ?
    Par yup dans le forum Outils
    Réponses: 5
    Dernier message: 27/08/2004, 16h24
  4. Configuration de UltraEdit pour java
    Par lantfeust dans le forum Environnement de Développement Intégré (EDI)
    Réponses: 1
    Dernier message: 19/12/2003, 16h57
  5. Profiler pour Java
    Par donde dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 10/02/2003, 17h36

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