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

C# Discussion :

Exécuter commande PING de Windows par le C#


Sujet :

C#

  1. #1
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 241
    Points : 83
    Points
    83
    Par défaut Exécuter commande PING de Windows par le C#
    Bonjour a tous,

    je voudrais savoir si il est possible d'effectuer une commande de type Ping en passant une adresse IP dans la CMD Windows...

    merci beaucoup.

    Sinon si cela est trop complexe, je pourrais essayer de reproduire l'affichage en utilisant la classe PING du framework 2.0 mais je ne sais pas comment diriger ma sortie pour avoir un affichage du même type que la CMD Windows...

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Tu peux utiliser une classe du FX .NET 2.0 pour faire une requete ping si tu veux

  3. #3
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 241
    Points : 83
    Points
    83
    Par défaut
    du FX ?

    en fait, je fais déjà ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                                        Ping monPing2 = new Ping();
                                        PingReply Reply2 = monPing2.Send(Wan1);
                                        StatutWan1 = Reply2.Status.ToString();
                                        TpsExec = Reply2.RoundtripTime.ToString();
    ou je récupère le ping en ms. Mais je voudrais lancer un pint -t dans une popup à la facon de la commande ping de windows. L'ideal serait de lancer cette commande windows en passant des paramètre ou de faire cette fameuse popup mais je ne sais pas comment ... Si vous avez une idée ... merci

  4. #4
    Membre actif
    Inscrit en
    Août 2006
    Messages
    381
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 381
    Points : 252
    Points
    252
    Par défaut
    Bonjour,

    tu peux créer un fichier .bat dans lequel tu mets:

    Et pour lancer ce fichier en C# tu écris:

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Diagnostics.Process.Start(@"chemin de mon fichier .bat", "adresse ip à pinger");

    ou autre solution:

    Ping C#

    ++

  5. #5
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par Pilloutou Voir le message
    Bonjour,

    tu peux créer un fichier .bat dans lequel tu mets:

    Et pour lancer ce fichier en C# tu écris:

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Diagnostics.Process.Start(@"chemin de mon fichier .bat", "adresse ip à pinger");

    ++

    Pas besoin de fichier bat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.Diagnostics.Process.Start(@"ping.exe", "-t adresse ip à pinger");

  6. #6
    Membre actif
    Inscrit en
    Août 2006
    Messages
    381
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 381
    Points : 252
    Points
    252
    Par défaut


    Bah oui, que je suis bêto...
    Je crois que je vais aller me coucher.
    Bonne nuit.

  7. #7
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 241
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par Thomas Lebrun Voir le message
    Pas besoin de fichier bat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.Diagnostics.Process.Start(@"ping.exe", "-t adresse ip à pinger");
    J'ai testé mais comme je pensais, cela ne fais rien, javais déjà essayer d'utiliser Process.Start pour d'autres applications mais sans succés...

    quand je lance cette commande, cela ne fais rien...

    je devrais voir une fenetre console avec mon ping non ?

  8. #8
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Non, il faut utiliser l'option ShowWindow de la classe Process pour que tu vois la fenêtre

  9. #9
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 241
    Points : 83
    Points
    83
    Par défaut
    j'ai cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                ProcessStartInfo proc = new ProcessStartInfo(@"ping.exe", "-t 10.26.8.100");
                proc.CreateNoWindow = false;
     
                proc.WindowStyle =  ProcessWindowStyle.Normal;
                Process proc1 = Process.Start(proc);
                proc1.WaitForExit();

    En fait, rien ne se passe en tâche de fond car je ne voi pas la commande PING dans mon gestionnaire des tâches ...

  10. #10
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    En fait, rien ne se passe en tâche de fond car je ne voi pas la commande PING dans mon gestionnaire des tâches ...
    Cela ne vaut pas dire que rien ne se passe, mais peut être que la commande ping est fait très rapidement, notemment s'il y a une erreur et qu'elle n'essais même pas de pinger.

    En passant j'ai créé une application console et j'ai mis ton code dans le main et cela marche très bien.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  11. #11
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 241
    Points : 83
    Points
    83
    Par défaut
    J'ai fait de même , c'est vrai que cela marche ! je fais un ping -t et cela marche bien...

    Maintenant, je travaille sur un site ASP.NET et C# et je voudrais avoir ceci sous l'action d'un bouton quelconque mais rien ne se passe...

    je ne comprend pas trop.

  12. #12
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Si tu es en ASP.NET, cette commande sera exécutée sur le serveur donc tu ne pourras pas la voir..

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Points : 780
    Points
    780
    Par défaut
    Il faut que tu récupère la sortie Standard et que tu la recopies dans un composant asp. Mates dans la faq, il y a un exemple.

    Ceci dit je te conseil surtout de réfléchir et d'étudier l'environnement web : il y a ce qui se passe coté serveur et coté client. Le résultat de ton ping sera celui effectué par le serveur.

  14. #14
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 241
    Points : 83
    Points
    83
    Par défaut
    merci pour ces infos, je vais regarder dans la FAQ !

  15. #15
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 241
    Points : 83
    Points
    83
    Par défaut
    Je reviens vers vous car je n'ai pas trouver comment rediriger la sortie dans asp.net...

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Points : 780
    Points
    780
    Par défaut
    Tu récupère une string, non? genre P.StandardOutput

    Tu la colle dans un TextBox, et vila...

    Mais je le répète (meme si je connais pas tes besoins) : je vois pas en quoi ca peut intéresser le client de connaitre le ping entre le serveur et un autre site...

  17. #17
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 241
    Points : 83
    Points
    83
    Par défaut
    En fait, les utilisateurs de mon appli sont des techniciens ...

    si je fais tourner un ping -t dans une textbox, cela va me rafraichir la page a chaque affichage, c'est un peu lourd non ?

    est t'il possible dafficher la sortie dans une popup ?

  18. #18
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  19. #19
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 241
    Points : 83
    Points
    83
    Par défaut
    j'étais passé à coté de cela, merci pour le lien ... En revanche, quelque chose m'échape, je voudrais aficher la sortie dans une nouvelle fenêtre pour reproduire en fait la console "standard".

    Si j'affiche une pop avec response.write("..."), cela va être statique. par exemple, si je fais 30 requetes ping pour simuler un ping -t, je ne vais pouvoir afficher la sortie qu'aprés l'exécution de ces 30 pings...

    comment faire pour recréer la console ?

    merci beaucoup

  20. #20
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    J'ai pas vérifier, mais sur l'objet StandardOutuPut n'aurais tu pas accés à une méthode readline plutot que readtoend ?
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

Discussions similaires

  1. Exécution commande windows sur site web
    Par gael5 dans le forum Langage
    Réponses: 0
    Dernier message: 18/12/2014, 17h18
  2. Exécuter commande à la fermeture de Windows
    Par rabobsky dans le forum Autres Logiciels
    Réponses: 12
    Dernier message: 19/02/2014, 12h06
  3. [Batch] Soucis exécution commandes (ping) pour chaque lignes d'un fichier texte
    Par devilsnake88 dans le forum Scripts/Batch
    Réponses: 9
    Dernier message: 16/01/2014, 20h12
  4. Exécution d'une commande Linux sur Windows !
    Par ghohm dans le forum Administration système
    Réponses: 2
    Dernier message: 06/03/2008, 00h29
  5. Réponses: 5
    Dernier message: 19/04/2005, 09h50

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