7
votes

Comment exécuter une commande de ping et obtenir un résumé de l'hôte ping?

Bonjour, j'ai besoin d'exécuter la commande ping à l'aide du code Java et d'obtenir un résumé de l'hôte Ping. Comment faire en Java?


1 commentaires

@ BheSh-Gurung j'ai commencé une petite bibliothèque Java code.google.com/p/jingy . Toujours beaucoup de travail (commencé aujourd'hui)


4 Réponses :


18
votes

Comme Viralpatel spécifié, vous pouvez utiliser runtime.exec ()

suivi est un exemple de celui-ci xxx

Sortie < / forte> xxx

référence http: / /www.velocityreviews.com/forums/t146589-ping-class-java.html


7 commentaires

Je souhaite ajouter sa sortie en HTML au lieu de PrintLn lorsque j'essaie de le faire, il continue à exécuter pendant une longue période, puis je l'annule!


Que dois-je faire pour l'ajouter à HTML?


Je pense que vous travaillez avec servlet , vous pouvez ajouter le texte au servlet HTML à l'aide de l'objet Printwriter


Pouvez-vous m'aider à cet égard?


Je n'ai aucune idée de c'est pourquoi je vous le demande de vous


i Méthode d'appel de JSP et au serveur IPend String et cette chaîne je le renvoie


Laissez-nous Continuez cette discussion en chat



1
votes

Découvrez cette bibliothèque de ping pour Java, je fais:

http://code.google.com/p/jingy/

Peut-être que cela peut aider


1 commentaires

Il ne supporte que UNIX? Vous devez également inclure le support Windows si vous voulez que votre bibliothèque soit utile ...



3
votes

inetAddress code> est une méthode qui utilise la demande ECHO ECMP (AKA ping) pour déterminer la disponibilité des hôtes.

String ipAddress = "192.168.1.10";
InetAddress inet = InetAddress.getByName(ipAddress);
boolean reachable = inet.isReachable(5000);


1 commentaires

Sous Windows, il semble que Java n'utilise pas de ping et de valeur par défaut à la connexion TCP sur le port 7, qui est généralement bloquée par un pare-feu. Sous UNIX, le ping nécessite un accès root et donc généralement par défaut du port 7. Par conséquent, il est inutile d'être inutiles dans des environnements de production.



0
votes

Le code ci-dessous fonctionnera sur le système Windows et Linux,

public static boolean isReachable(String url) throws MalformedURLException {
        if (!url.contains("http") && !url.contains("https")) {
            url = "http://" + url;
        }
        URL urlObj = new URL(url);
        url = urlObj.getHost();
        url = "ping " + url;
        try {
            Process p = Runtime.getRuntime().exec(url);
            BufferedReader inputStream = new BufferedReader(
                    new InputStreamReader(p.getInputStream()));
            String s = "";
            while ((s = inputStream.readLine()) != null) {
                if (s.contains("Packets: Sent") || s.contains("bytes of data")) {
                    return true;
                }
            }
            return false;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }


1 commentaires

Vulnérable à l'injection de commandement, S.Contains ("octets de données") sera sur chaque sortie de ping sous Windows, quel que soit l'état haut ou en bas. Ainsi, ce code reviendra toujours vrai, sauf si le processus ne parvient pas à démarrer