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 :

Ping sans attendre


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2015
    Messages : 34
    Points : 32
    Points
    32
    Par défaut Ping sans attendre
    Bonjour,
    j'écrit actuellement une commande Powershell en c# le but est de faire un "scanner de réseaux avec deux trois options"
    dans une première étapes je voudrais envoyé un ping a toutes les adresses d'un réseaux pour voir les quels sont joignable ,
    le problème c'est qu'au final une machine perd beaucoup de temp a attendre les réponse de ping, n'y a t-il pas moyen d'envoyer une série de ping
    sans attendre et de regardé au fur et a mesure les quels ont répondu ?

  2. #2
    Membre actif
    Homme Profil pro
    Developpeur
    Inscrit en
    Février 2013
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Février 2013
    Messages : 180
    Points : 271
    Points
    271
    Par défaut
    Bonjour,

    tu peut envoyer une trame "broadcast" c'est une trame qui est envoyé à tout ton sous réseau

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2015
    Messages : 34
    Points : 32
    Points
    32
    Par défaut
    La trame "broadcast" permet de pingé mon réseaux d'appartenance , mais il me semble que les routeurs bloque les trames "broadcast"
    or le réseaux a scanné n'est pas forcement le réseaux d'appartenance de la machine qui exécute la commande , c'est pour ça qu'il me semble que
    je suis obligé de pingé les machines une par une .

  4. #4
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    tu pourrais lancer tes pings dans des threads, ça te permettrait d'en lancer plusieurs en même temps.
    Plus je connais de langages, plus j'aime le C.

  5. #5
    Membre actif
    Homme Profil pro
    Developpeur
    Inscrit en
    Février 2013
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Février 2013
    Messages : 180
    Points : 271
    Points
    271
    Par défaut
    oui si ce n'est pas dans le même sous réseau, je ne vois que les threads pour faire ce que tu veux
    1 machine = 1 thread

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2015
    Messages : 34
    Points : 32
    Points
    32
    Par défaut
    peut être que j'ai mâle comprit mais sur msd.microsoft j'ai vue ça :
    Vous ne pouvez pas utiliser la même instance de la classe Ping pour générer plusieurs demandes d'écho ICMP simultanées. L'appel à Send pendant qu'un appel SendAsync est en cours ou l'appel à SendAsync plusieurs fois avant que tous les appels précédents ne soient terminés provoque une exception InvalidOperationException.

    cela ne veut-il pas dire que je ne peut lancé qu'un threads en même temps ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Points : 552
    Points
    552
    Par défaut
    J'imagine qu'il faut instancier autant de fois Ping qu'il y aura de Threads.

    Utilise la TPL au passage, avec la gestion des tasks qui est facilitée.

  8. #8
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Pour l'envoie via la classe Ping je pense comme alavoler : c'est un seul send asynchrone par instance de classe.
    Au pire fait un petit test, tu verras rapidement ce qu'il se passe
    Plus je connais de langages, plus j'aime le C.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2015
    Messages : 34
    Points : 32
    Points
    32
    Par défaut
    oui je pense que c'est ça maintenant j'ai la theorie ^^ ,*
    pour la pratique .....
    ba j'ai commencé le c# lundi vue que c'est pour créer ma commande Powershell
    et donc la je suis un peut paumé je l'avoue du coup j'ai bien comprit devoir faire des ping asynchrone sur pluisieur instance de classe mais au niveau du code sa se passe coment ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     Ping pingSender = new Ping ();
    pingSender.SendAsync(@IP1);
     Ping pingSender = new Ping ();
    pingSender.SendAsync(@IP2);
    ....
    je vois pas trop comment faire

  10. #10
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Petite remarque : si les requêtes sont envoyées de manières asynchrone il ne devrait pas y avoir besoin de threads, juste d'un EventHandler.
    Exemple en pas powershell :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private void SendMultiPing(List<string> addresses) {
    	foreach (string address in addresses) {
    		Ping pong = new Ping();
    		pong.PingCompleted += PingCompleted;
    		pong.SendAsync(address, new byte[32]);
    	}
    }
     
    private void PingCompleted(object sender, PingCompletedEventArgs e) {
    	Console.WriteLine(e.Reply.Status.ToString());
    }
    Plus je connais de langages, plus j'aime le C.

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/02/2006, 14h45
  2. Popup se chargeant sans attendre la fenêtre 'mère'?
    Par xavier.misseri dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/11/2005, 13h10
  3. [Système] Lancer un script sans attendre sa fin ?
    Par parisien dans le forum Langage
    Réponses: 9
    Dernier message: 03/11/2005, 22h09
  4. [Système] Lancer un executable sans attendre la fin
    Par raptor70 dans le forum Langage
    Réponses: 1
    Dernier message: 27/10/2005, 14h25
  5. [Dos] Lancer une commande dos sans attendre la fin
    Par MrEddy dans le forum Windows
    Réponses: 4
    Dernier message: 09/06/2005, 17h38

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