PING pb avec system() Visible

cs_JCpp Messages postés 334 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 3 juillet 2010 - 28 oct. 2003 à 13:30
5h33ck0n Messages postés 4 Date d'inscription mardi 20 avril 2004 Statut Membre Dernière intervention 26 avril 2004 - 26 avril 2004 à 12:20
Je voudrai réaliser un prog. PING
J’en ai trouvé un prog. que je trouve bien, et qui est rapide pour savoir ci il y a un serveur avant de réaliser un screnner.
Ce programme indique uniquement, ci il y a un serveur.
http://www.cppfrance.com/code.aspx?ID=10221

int ping (char ip[50])
{
int result = 0;
char commande[100];
strcpy (commande,"ping ");
strcat (commande,ip);
strcat (commande, " -n 1 > temp");
system (commande); // <--- PB ICI

FILE * temp;
temp = fopen ("temp","r");
char test[50];
while (!feof (temp))
{
fscanf (temp,"%s",test);
if (strcmp (test,"TTL=120") == 0)
{
result = 1;
}
}
fclose(temp);
return result;
}


Le petit problème c’est la fonction «system» qui affiche une fenêtre MS-DOS.

Il y a-t-il un moyen pour la cacher, ou une autre fonction pour réaliser la même chose ?

Donc, ci une personne pouvait m’aider pour l’histoire de la fonction system.

Meci

http://perso.wanadoo.fr/iar/IA.html

13 réponses

Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
28 oct. 2003 à 13:42
ShellExecute() devré allé
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
28 oct. 2003 à 14:10
Salut Anacr0x, serais tu en conflit avec la grammaire ?
BruNews, ciao...
0
Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
28 oct. 2003 à 14:56
oups... je sais que beaucoup de personne n'aime pas ça, mais j'ai pour habitude d'écrire à la manière sms, ça permet de gagner pas mal de temps sur les chat et autre !
Alors je m'excuse par avance, mais je ne fais pas souvent (je dirais même rarement) attention à ce que j'écris...

PS : tu remarquera quand même que là j'ai fais un effort (^_^)
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
28 oct. 2003 à 15:04
OK, plus que 2 fautes dans PS.
Tu es en bonne voie pour le certificat d'études.
Mince alors, parait qu'il n'existe plus.
BruNews, ciao...
0

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

Posez votre question
Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
28 oct. 2003 à 16:08
rectification : tu remarqueras quand même que là j'ai fait un effort

vouaalaaaa !!! je suis prêt pour le certificat !

Mais bon, si on arrétait de parler français, j'ai déjà un commentaire composé qui va me ruiner mes vacances et ça me traumatise bien assez comme ça ;)
Si seulement je pouvais avoir des intérots sur du C/C++ ça me motiverait un peu plus, j'ai hate d'être en IUT info et quitter ce bahut minable...
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
28 oct. 2003 à 17:04
Salut,
En terminale S normalement tu commences a faire du C (depend des options que tu as pris en fait).
0
Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
28 oct. 2003 à 17:13
euh... en fait jsuis encore en première, je viens de retapé(non, ne riez pas svp...) et bien que je sois également en S, je n'ai jamais entendu parler de C en terminale, la seule options un peu informatique qui existe est le MPI qui s'arrète après la seconde (c'est trop facile et inintéressant d'ailleurs), j'ai beau chercher je n'en vois pas d'autre
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
28 oct. 2003 à 17:25
Ben moi j'y etais encore en 1ere il y a peu...
Tout juste 30 ans, et on ne rit pas non plus.
BruNews, ciao...
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
28 oct. 2003 à 17:29
Salut,
C'est dans l'option SI Sciences de l'Ingénieur, qui commence a partir de la 1ere.
0
Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
28 oct. 2003 à 17:41
Ah ! Ben tant pis, je ne peut pas me débarasser de l'espagnol (où je suis loin d'être bon) et prendre SI en terminale je suppose, donc j'ai pas trop le choix (ou alors il faudrait que je redouble encore une fois mais c'est hors de question)
0
cs_JCpp Messages postés 334 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 3 juillet 2010
28 oct. 2003 à 18:03
Ça chat dure de Français, moi aussi je ne suis pas une bette.
J’essaye d’en supprimer le plus possibles.
(j'ai reçu 10 E-mail lol, au début je me suis posé des questions, maintenant je comprend lol)

Ci non, je vais essayer ShellExecute()
0
Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
28 oct. 2003 à 18:29
lol, désolé de monopoliser la conversation qui n'a maintenant plus grand chose a voir avec ta question (^_^)
0
5h33ck0n Messages postés 4 Date d'inscription mardi 20 avril 2004 Statut Membre Dernière intervention 26 avril 2004
26 avril 2004 à 12:20
voila, jai utilisé la source, en changeant bien le system() par le ShellExecute et ca me donne ca =>

int ping ( char ip [ 17 ] )
{
int result = 0; // declare result et l'initialise à 0

FILE * temp1 = fopen ( "Y:\\Textile\\PingTextile v9\\ping\\pingping.bat" , "w+" );

char commande [ 45 ]; // tableau contenant la commande a envoyer
strcpy ( commande , "ping " ); //
strcat ( commande , ip ); // insertion de l'ip envoyé en parametre dans la commande
strcat ( commande , " -n 1 -i 1 -w 1 > temp1" ); // insertion des paramètres envoyé avec la commande ping

fwrite( commande , sizeof ( char ) , 45 , temp1 );
fclose ( temp1 );

ShellExecute ( NULL , "open" , "Y:\\Textile\\PingTextile v9\\ping\\pingping.bat" , "" , "" , SW_HIDE );

//Sleep ( 200 );

FILE * temp2 = fopen ( "Y:\\Textile\\PingTextile v9\\ping\\temp1" , "r" ); // declare un pointeur temp2 sur le fichier temp1
char test [ 50 ]; // declaration d'un tableau test
while ( !feof ( temp2 )) // on parcour le fichier
{
fscanf ( temp2 , "%s" , test ); // récupére une chaine qui correspond a un mot
if ( strcmp ( test , "octets=32" ) == 0 ) // si ce mot vaut octets=32, on défini result à 1
{
result = 1;
}
}
fclose ( temp2 ); // ferme temp2

return result; // on retourne la valeur de result
}

mais le pb cé kan je fait un apel a cette fonction ping a l'aide de ca (je suis en MFC) =>

void CPingDlg::OnPC1()
{
char ip [ 17 ];
strcpy ( ip , "192.168.100.11" );
int result = ping ( ip ); // envoi 'ip' en parametre à la fonction ping
if ( result 0) // affiche Offline si result 0
{
m_result1 = "Offline";
}
else
{if ( result 1) // affiche Online si result 1
{
m_result1 = "Online";
}
}

UpdateData ( FALSE );
}

et ben, je suis obligé de cliké 2 foi sur le bouton, pour avoir le vrai resultat ! il doit il y avoir un pb de "Updatedata" mais je voi pa ou ! (je me sui pa trompé sous MFC, jai bien mi le truc dan OnClik et pa OnDoubleClik) !! voila voila !!

merci davance !!
0
Rejoignez-nous