Bonjour tout le monde !
En cours, je suis sur des petits projets pour mon BTS... Or l'un d'eux va me rendre zinzin
Je pense que la commande system () en est la source, mais comment résoudre ce problème ? Je n'ai pas la réponse. C'est pourquoi je viens à vous
Mon programme permet de gérer les ordinateurs d'un réseau : il stock dans un fichier les données (adresse IP, nom du poste etc.) et l'une de ses fonctions consiste à effectuer un ping pour connaître l'état de la machine (en ligne / hors ligne).
Pour cela, j'utilise la fonction system... Mais quelque chose de pas cool se produit ; explications :
Voici mon code source :
Et là, voici le résultat ! Pas très jolie ...
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
26 void tester (char* fichierIP, char* fichierOK, char* fichierNOK) { Ordi* TabOrdi = chargerFichier(fichierIP); Ordi TabOrdiok[100]; Ordi TabOrdiNok[100]; int i = 0; int resultat = 0; char cmd[50]; for (i=0;i <= nbreElement;i++) // nbreElement contient le nombre d'enregistrement du fichierIP { printf("---------------\n"); // Je crée ma commande de ping et la stock dans cmd sprintf(cmd, "ping -n 1 %d.%d.%d.%d > NULL", TabOrdi[i].IPOrdi.ip1, TabOrdi[i].IPOrdi.ip2, TabOrdi[i].IPOrdi.ip3, TabOrdi[i].IPOrdi.ip4); // Je test printf("cmds : %s\n", cmd); // J'exécute ma commande et récupère dans "resultat" le code retourné par system() resultat = system (cmd); // J'affiche ce code résultat (pour voir si tout fonctionne) printf("resultat : %d\n", resultat); } }
Comme on peut voir mes adresses IP sont pas très... Bref ! Y'a un souci !---------------
cmds : ping -n 1 123.12.123.10 > NULL
resultat : 0
---------------
cmds : ping -n 1 4980802.1999633846.1988581918.48 > NULL
resultat : 1
---------------
cmds : ping -n 1 0.0.2679004.1988581993 > NULL
resultat : 1
---------------
cmds : ping -n 1 0.0.0.0 > NULL
resultat : 1
---------------
cmds : ping -n 1 1988583728.88.1988583756.0 > NULL
resultat : 1
---------------
cmds : ping -n 1 0.2678220.0.0 > NULL
resultat : 1
---------------
cmds : ping -n 1 0.0.0.0 > NULL
resultat : 1
Je commente la ligne où je fais mon system ()
Et là, miracle tout s'affiche correctement ! Mais je n'ai pas de ping de fait !
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
26 void tester (char* fichierIP, char* fichierOK, char* fichierNOK) { Ordi* TabOrdi = chargerFichier(fichierIP); Ordi TabOrdiok[100]; Ordi TabOrdiNok[100]; int i = 0; int resultat = 0; char cmd[50]; for (i=0;i <= nbreElement;i++) // nbreElement contient le nombre d'enregistrement du fichierIP { printf("---------------\n"); // Je crée ma commande de ping et la stock dans cmd sprintf(cmd, "ping -n 1 %d.%d.%d.%d > NULL", TabOrdi[i].IPOrdi.ip1, TabOrdi[i].IPOrdi.ip2, TabOrdi[i].IPOrdi.ip3, TabOrdi[i].IPOrdi.ip4); // Je test printf("cmds : %s\n", cmd); // J'exécute ma commande et récupère dans "resultat" le code retourné par system() //resultat = system (cmd); // J'affiche ce code résultat (pour voir si tout fonctionne) printf("resultat : %d\n", resultat); } }
Bizarre n'est-ce pas ?---------------
cmds : ping -n 1 123.12.123.10 > NULL
resultat : 0
---------------
cmds : ping -n 1 192.168.12.3 > NULL
resultat : 0
---------------
cmds : ping -n 1 192.168.13.4 > NULL
resultat : 0
---------------
cmds : ping -n 1 192.168.12.6 > NULL
resultat : 0
---------------
cmds : ping -n 1 192.168.14.5 > NULL
resultat : 0
---------------
cmds : ping -n 1 192.168.14.8 > NULL
resultat : 0
---------------
cmds : ping -n 1 192.168.1.96 > NULL
resultat : 0
Avez-vous une idée pour solutionner mon problème ?
Merci d'avance
Partager