begin process at 2012 02 12 13:02:32
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseaux & Internet

 > EXECUTER COMMANDE PING [DEV-CPP]

EXECUTER COMMANDE PING [DEV-CPP]


 Information sur la source

Note :
9,5 / 10 - par 2 personnes
9,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseaux & Internet Niveau :Débutant Date de création :28/12/2002 Date de mise à jour :28/12/2002 10:28:16 Vu :19 461

Auteur : Funcky

Ecrire un message privé
Site perso
Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

 Description

Voilà un moyen, peut être un peu barbare, d'executer une commande ping sur un reseau local et d'en recevoir le resultat ...

Source

  • #include <stdio.h>
  • #include <stdlib.h>
  • #include <string.h>
  • int ping (char ip[50]);
  • void main (void)
  • {
  • int result;
  • char ip[50];
  • strcpy (ip,"129.46.0.2");
  • result = ping (ip);
  • printf ("0 pour offline, 1 pour online : %d",result);
  • getchar();
  • }
  • int ping (char ip[50])
  • {
  • int result = 0;
  • char commande[100];
  • strcpy (commande,"ping ");
  • strcat (commande,ip);
  • strcat (commande, " -n 1 > temp");
  • system(commande);
  • FILE * temp;
  • temp = fopen ("temp","r");
  • char test[50];
  • while (!feof (temp))
  • {
  • fscanf (temp,"%s",test);
  • if (strcmp (test,"TTL=128") == 0)
  • {
  • result = 1;
  • }
  • }
  • fclose(temp);
  • return result;
  • }
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int ping (char ip[50]);

void main (void)
{
int result;
char ip[50];
strcpy (ip,"129.46.0.2");
result = ping (ip);
printf ("0 pour offline, 1 pour online : %d",result);
getchar();
}

int ping (char ip[50])
{
int result = 0;
char commande[100];
strcpy (commande,"ping ");
strcat (commande,ip);
strcat (commande, " -n 1 > temp");
system(commande);
FILE * temp;
temp = fopen ("temp","r");
char test[50];
while (!feof (temp))
{
      fscanf (temp,"%s",test);
      if (strcmp (test,"TTL=128") == 0)
      {
           result = 1;
      }
}
fclose(temp);
return result;
}

 Conclusion

Si quelqu'un a une autre methode simple, je suis preneur, surtout si elle est plus rapide ...


 Sources du même auteur

LECTURE DE L'ENTÊTE D'UN FICHIER BMP [GCC]
CONVERTIR UN NOMBRE BINAIRE EN DÉCIMAL ET INVERSEMENT
HEURE SUR AFFICHEUR 7 SEGMENTS [GCC]
Source avec Zip GESTION DE PACK
Source avec une capture CALCULATRICE

 Sources de la même categorie

Source avec Zip Source avec une capture TRACEROUTE [WINPCAP] par ganjarasta
Source avec Zip SERVEUR MULTITHREAD [LINUX/WIN] par nipepsinicolas
Source avec Zip Source avec une capture SECURE REMOTE SHELL [WIN32] par ganjarasta
Source avec Zip Source avec une capture SUIVI DE PRODUCTION ONDULEUR PHOTOVOLTAÏQUE SOLARMAX par brunovan
Source avec Zip MINICHAT MULTI-CLIENT par wisar

Commentaires et avis

Commentaire de Kaid le 28/12/2002 10:58:49

Deux liens qui vont certainement d'intéresser (il faut s'enregistrer sur le site pour télécharger les fichiers) :

http://www.codeproject.com/internet/winping.asp
http://www.codeproject.com/internet/cping.asp

Commentaire de Funcky le 28/12/2002 11:08:59

Merci, jevais regarder ca ...

Commentaire de zzzzzz le 21/02/2003 11:48:37

arf elle est bien ta sources mais ya aucunes explications :(

Commentaire de HotSpot le 03/05/2003 16:05:46

Fo dire qu'elle est pas si compliqué que ca ... les explications ne sont pas requise...

Commentaire de JCpp le 27/10/2003 18:50:40

Comme c'est mon 1er programme PING, je ne comprends pas bien tout DSL.

Donc, STP pourrais tu me donner quelle que explications.
Pourquoi tu ouvres ce fichier, tu ne l'envois pas pour savoir combien de temps cela a pris ?
J'obtiens result = 1, pourquoi ?

Merci Bcp

Commentaire de Funcky le 27/10/2003 20:00:12

Je ne m'occupe pas du temps, je regarde juste si l'ordi distant répond .. Si il répond, result vaut 1, si il ne répond pas, il vaut 0 ...

Commentaire de JCpp le 27/10/2003 23:20:47

Ton programme me plaît vraiment beaucoup, sauf que ça ouvre une fenêtre MS-DOS, il y a-t-il un moyen, une autre façon pour qu'elle n'apparaisse pas, ou une autre fonction que « system » ?
Car ma source est en WiIN32
Merci

Commentaire de Funcky le 28/10/2003 09:01:49

A mon avis en utilisant les thread avec la fonction fork() il doit y avoir moyen, mais je ne serais aps t'aider beaucoup plus que ca ...

Commentaire de JCpp le 28/10/2003 19:21:33

Bon, j'ai un peux galéré pour amélioré ton prog.

Remplace :
system(commande);
par :
ShellExecute(0,"open",commande,0,0,SW_NORMAL);

Une autre question, ci on tape sur la fenêtre MS-DOS :
C:ping XXX.XXX.XXX.XXX -n 1

Durée approximative des boucles en millisecondes :
Minimum = 0ms, maximum =0ms, Moyenne = 0ms

C'est tu récupérer ces informations, on obtiendrai la valeur du PING

Merci

Commentaire de 5h33ck0n le 20/04/2004 18:22:27

voila, jai utilisé la source, en changeant bien le system() par le ShellExecute et ca me donne ca =&gt;

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 &gt; 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) =&gt;

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 !!

Commentaire de arthiolis le 25/04/2006 17:59:07

Bonjour

malgré ce que certains peuvent dire ( ui je sais que c'était pour améliorer ) mais je trouve ta source sympathique, et je vais sûrement m'en inspirer je pense pour un pti programme java qui ferait appelle à cette application que tu donnes. Bon on pourrait dire que la méthode est pas optimisée mais bon je le dis pas car je fais les même choses donc...  Sinon j'ai mis longtemps pour comprendre comment tu lisais le temp alors que je voyais pas comment il était rempli mais ca y est j'ai trouvé.

Bonne journée les gens.

Commentaire de iznotek le 18/07/2006 22:40:05

tip, top ton prog et malin
(pour ceux qui ne comprenne pas le prog à la premiere lecture: revision du C avec marabout!)
pour gagner du temps, on peut rajoute apres -n 1 : -w 100 ou moins
sur un "bon" reseaux local un ping repond en moins de 10ms e donc en 100 on sai deja que c'est foutu!
a tchaou


Commentaire de KeZyX le 29/05/2007 12:14:20

Salut.Voila,ton prog me plait bien mais je voudrais pouvoir tapper n'importe quelle adresse IP a l'aide d'un scanf.
Mais alors allez savoir pourquoi je n'y arrive pas,j'ai un probleme avec les strcpy je pense car au moment ou je tappe l'adresse et que je la valide,le prog se coupe et j'ai le droit au rapport d'erreures^^.
Quelqu'un pourrait-il m'aider?

Commentaire de xave4552 le 06/08/2007 01:41:36

Salut je suis totalement newbi en c++  je suis ariver a comprendre presque tout le programe mais g une ligne qui me pause problem esque kelkin pourait me la decrir svp
cet ligne est:
strcat (commande, " -n 1 > temp");

Commentaire de Renfield le 06/08/2007 06:14:36 administrateur CS

Google est ton ami:

http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/strcat.3.html

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,296 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales