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


Sujet :

Entrée/Sortie Java

  1. #1
    Membre confirmé
    ping en Java
    Bonjour,
    je dois dire que je ne connais rien en ce qui concerne la partie de l'API gerant ce type d'utilisation. J'ai parcouru la FAQ et j'ai trouvé :
    http://java.developpez.com/faq/java/...au#RESEAU_ping
    Qui me convient tout à fait mais InetAdress (et les deux sous-classes, Inet4Adress et Inet6Adress aussi en fait) ne possede pas de constructeur public.
    Comment je fais moi?

  2. #2
    Membre averti
    Regarde les fonctions static de InetAddress ...

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    InetAddress inet = InetAddress.getByName(String host);
     
    boolean b = inet.isReachable(int timeout);





    P.S. Dans la FAQ il y a une erreur: InetAdress n'a qu'un N

  3. #3
    Membre confirmé
    En effet, j'avais effectivement cherché sur les methodes static mais je n'avais pas trouvé...
    Merci

  4. #4
    Membre confirmé
    Voici le code que j'ai ecris pour tester

    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
    import java.net.InetAddress;
     
    public class Test
    {
    	public static void main(String[] arigs)
    	{
    		try
    		{
    			final String hostName = "www.google.fr";
    			final InetAddress target = InetAddress.getByName(hostName);
    			if(target!=null)
    			{
    				final boolean ping = target.isReachable(1000);
    				System.out.println(ping?"target reached":"unable to reach the target");
    			}
    			else System.out.println("false target");
    		}
    		catch(Exception e)
    		{
    			System.err.println("Pas cool! Erreur : "+e);
    			e.printStackTrace();
    			System.exit(0);
    		}
    	}
    }


    Si je teste mon "loopback"
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    hostName=null

    , il n'y a pas de problème. Néanmoins si je teste
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    hostName="www.google.fr"

    je n'arrive pas à le joindre. Etant donné que je suis derrière un firewall, cela peut etre la raison...
    Qui veut bien tester pour moi?
    L'utilitaire ping (terminal/Linux) fonctionne parfaitement pour pinger www.google.fr, l'API est elle sensée procurer un comportement similaire necessairement?

  5. #5
    Membre chevronné
    Ce message n'a pas pu être affiché car il comporte des erreurs.
    Bien le bonjour chez vous
    Jowo

  6. #6
    Membre confirmé
    Mouai... donc rien de tres convaincant comme je le pensais... J'avais effectivement lu la doc qui certes et imprecise mais vu que je ne connais pas grand chose dans ce domaine, la methode utilisée pour "pinger" n'était pas mon problème.

    Je vais creuser du coté de la" solution portable antérieure".

  7. #7
    Membre confirmé
    ET j'abandonne aussi celle-ci puisqu'elle utilise des JNI, fonctionnant sous windows 32 bits...

  8. #8
    Membre à l'essai
    voici ce modeste code pour l'interréssé
    import java.io.*;
    import java.net.*;
    public class PseudoPing {
    public PseudoPing(){}
    //ping:
    boolean ping(String host){

    int timeOut = 3000; // I recommend 3 seconds at least int timeout = 3000 / / Je recommande 3 secondes au moins
    boolean status=false;
    try {
    status = InetAddress.getByName (host). isReachable (timeOut);
    } catch (UnknownHostException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return status;
    }
    public static void main(String args[]){
    String host = "172.16.0.28"; // modifiez ce paramètre
    PseudoPing p=new PseudoPing();
    if(p.ping(host)==true)
    System.out.println("Connecté");
    }

    }

###raw>template_hook.ano_emploi###