Plusieur console pour la commande PING

Résolu/Fermé
jake93420 Messages postés 72 Date d'inscription mercredi 25 mai 2011 Statut Membre Dernière intervention 5 juin 2013 - 6 déc. 2011 à 14:38
jake93420 Messages postés 72 Date d'inscription mercredi 25 mai 2011 Statut Membre Dernière intervention 5 juin 2013 - 13 déc. 2011 à 12:21
Bonjour,

Je doit pinger ma salle de cour, il y a 24 PC, mais il faut que je ping tout les PC en même temps, j'ai réussi a le faire sur un seul PC mais je sait que quand on lance plusieur ping a la suite il lancer les ping les un a la suite des autres. J'aimerais les lancer tous en même temps.


voila mon test :

void FGestionInternet::OnrafraichireClick(wxCommandEvent& event)
{
// for(int i=100;i<113;i++)
// {
int ping=system("ping 192.168.0.104");
// }

}

A voir également:

8 réponses

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
6 déc. 2011 à 14:46
essai
void FGestionInternet::OnrafraichireClick(wxCommandEvent& event)
{
// for(int i=100;i<113;i++)
// {
int ping=system("ping 192.168.0.104&");
// }

} 
0
jake93420 Messages postés 72 Date d'inscription mercredi 25 mai 2011 Statut Membre Dernière intervention 5 juin 2013 3
6 déc. 2011 à 14:57
Il faudrait que le dernier octet soit remplacer par mon "i" du for.

Mais ton astuce ne les lance pas tous en même temps elle les lance tjrs les une après les autres.

merci comme même
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
6 déc. 2011 à 15:11
tu es sous windows ? en effet, c'est un peu plus compliqué alors.
0
jake93420 Messages postés 72 Date d'inscription mercredi 25 mai 2011 Statut Membre Dernière intervention 5 juin 2013 3
6 déc. 2011 à 15:14
oui je suis sous windows. la loose
0
jake93420 Messages postés 72 Date d'inscription mercredi 25 mai 2011 Statut Membre Dernière intervention 5 juin 2013 3
13 déc. 2011 à 09:15
re-up le sujet tjrs bloquer
0
jake93420 Messages postés 72 Date d'inscription mercredi 25 mai 2011 Statut Membre Dernière intervention 5 juin 2013 3
13 déc. 2011 à 09:40
je re up le sujet avec mon code.

int a=0;void *ping=0;
void* tache(void*);
wxString addr_ping = "192.168.0.";
void FGestionInternet::OnrafraichireClick(wxCommandEvent& event)
{
    pthread_t thread[a];
    for(int i=0;i<13;i++)
    {
        a=100;
        addr_ping += a;
        pthread_create(&thread[a],NULL,tache,NULL);
        a++;
        testping->SetLabel(addr_ping);
    }

}
void* tache(void*)
{
    system("ping 192.168.0.104");
    return ping;
}



Voila le dernier octet du ping j'aimerais le changer merci!!
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
13 déc. 2011 à 09:57
addr_ping += a;
peut tu vraiment ajouter un entier à un wxString ??? Pas en C en tout cas, éventuellement en C++.
0
jake93420 Messages postés 72 Date d'inscription mercredi 25 mai 2011 Statut Membre Dernière intervention 5 juin 2013 3
13 déc. 2011 à 10:06
je suis en c++, wxWidget impose c beaucoup mieux
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
13 déc. 2011 à 09:55
Salut.
C'est pas con les thread.si ça fonctionne.
int a=0;void *ping=0;
void* tache(void*);
wxString addr_ping = "192.168.0.";
void FGestionInternet::OnrafraichireClick(wxCommandEvent& event)
{
    pthread_t thread[13];
    a=100;
    for(int i=0;i<13;i++)
    {
        pthread_create(&thread[i],NULL,tache,(void*)&a);
        a++;
        testping->SetLabel(addr_ping);
    }

}
void* tache(void* fin)
{
    int n=*((int*)fin);
    char c[4];
    sprintf(c,"%d",n);
    char cmd[31];
    strcpy(cmd,addr_ping);
    strcat(cmd,c);
    system(c);
    return ping;// ???
}
ping de 192.168.0.100 à 192.168.0.112
Il me semble que par défaut les thread sont crées en attente, et qu'il faut modifier les attributs pour les avoir en détacher.
0
jake93420 Messages postés 72 Date d'inscription mercredi 25 mai 2011 Statut Membre Dernière intervention 5 juin 2013 3
13 déc. 2011 à 10:13
Il ne prend pas en compte la concaténation. il laisse le dernier octet vide. je me tape la tête contre le clavier.
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
13 déc. 2011 à 10:27
Si tu fais du C++, tu n'est pas obliger de passer par strcpy strcat etc. fait avec des objets, c'est plus facile. Je ne connais pas wx donc je ne peut pas t'aider.
Sinon, je ne comprend pas exactement ton problème de concaténation.
0
jake93420 Messages postés 72 Date d'inscription mercredi 25 mai 2011 Statut Membre Dernière intervention 5 juin 2013 3
13 déc. 2011 à 10:58
probleme resolue:

int a[12],b;void *ping=0;
void* tache(void*);
wxString addr_ping = "192.168.0.";
void FGestionInternet::OnrafraichireClick(wxCommandEvent& event)
{
pthread_t thread[13];
b=101;
for(int i=0;i<13;i++)
{
a[i]=b;
char d[4]="";
sprintf(d,"%d",b);
wxMessageBox(d);
b++;
}

for(int i=0;i<13;i++)
{
pthread_create(&thread[i],NULL,tache,(void*)&a[i]);

}
testping->SetLabel(addr_ping);
}
void* tache(void* fin)
{
int n=*((int*)fin);
char c[4]="";
sprintf(c,"%d",n);
wxMessageBox(_T("Valeur de C : "), wxT(c));
char cmd[36];
strcpy(cmd,addr_ping);
strcat(cmd,c);
wxMessageBox(cmd);
system(c);
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
13 déc. 2011 à 11:13
C'est pas plutôt system(cmd) qu'il faut mettre ? Erreur de ma part.
Pourquoi dimensionnes tu a à 12 et non à 13 ? Tu as un risque d'erreur.
0
jake93420 Messages postés 72 Date d'inscription mercredi 25 mai 2011 Statut Membre Dernière intervention 5 juin 2013 3
13 déc. 2011 à 12:09
Je dimensionnes a 13 comme il s'arrête a 12 je vais pas jusqu'à qu'il soit égale a 13.

Et oui c'est bien system(cmd) j'ai corriger.

Pour les suivant qu'il se poseront la question j'ai réussi a pinger les 24 PC avec le code suivant :

int a[12],c[12],b,b2,x,w;
int ping1[12];
int ping2[12];
void* tache(void*);
void* tache2(void*);
wxString addr_ping = "ping 192.168.0.";
int pc_s1[13],pc_s2[13];

void FGestionInternet::OnrafraichireClick(wxCommandEvent& event)
{
    pthread_t thread[13];                 
    b=101;                                        //Initialisation des dernier octet du ping
    b2=201;
    for(int i=0;i<13;i++)
    {
        a[i]=b;                                     // rempli le tableau des dernier octet des ping salle 1
        c[i]=b2;                                    // rempli le tableau des dernier octet des ping salle2
        b++;
        b2++;
    }

    for(int i=0;i<13;i++)
    {
        pthread_create(&thread[i],NULL,tache2,(void*)&c[i]);
                                                          //création du premier thread pour la salle2
    }
    for(int i=0;i<13;i++)
    {
        pthread_create(&thread[i],NULL,tache,(void*)&a[i]);
                                                          //création du premier thread pour la salle1

    }
    
    for(int i=0;i<30;i++)
    {
        pc_s1[i]=ping1[i];                         //je vai essayer de récupérer les valeur du ping 
        pc_s2[i]=ping2[i];
        
      
    }
}
void* tache2(void* fin2)
{
    int n2=*((int*)fin2);
    char c2[4]="";
    sprintf(c2,"%d",n2);
   // wxMessageBox(_T("Valeur de C : "), wxT(c));
    char cmd2[36];
    strcpy(cmd2,addr_ping);
    strcat(cmd2,c2);
    //wxMessageBox(cmd2);
    n2=n2-100;
    //wxMessageBox(n2);
    ping2[n2]=system(cmd2);
    return 0;
}
void* tache(void* fin)
{
    int n=*((int*)fin);
    char c[4]="";
    sprintf(c,"%d",n);
   // wxMessageBox(_T("Valeur de C : "), wxT(c));
    char cmd[36];
    strcpy(cmd,addr_ping);
    strcat(cmd,c);
   // wxMessageBox(cmd);
    n=n-100;
   // wxMessageBox(n);
    ping1[n]=system(cmd);
    return 0;


    //system("ping 192.168.0.104");
    //return ping;
}
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
13 déc. 2011 à 12:16
Houlà, si tu te récupère une erreur de segmentation tu ne viendras pas pleurer !
et je maintiens, tu fait a[12], tu devrais faire int a[13].
Ensuite, tu crée une fonction tache2 qui n'est pas très utile, de toute façon regarde ce que retourne la fonction "system()", mais à mon avis pas ce que tu veux.
Si ta dernière boucle (le dernier for à 30) ne te génère pas d'erreur, tu auras vraiment beaucoup de chance.
0
jake93420 Messages postés 72 Date d'inscription mercredi 25 mai 2011 Statut Membre Dernière intervention 5 juin 2013 3
13 déc. 2011 à 12:21
la dernier boucle c'est un test elle a gicler la.
0