Tutorial pour effectuer un ping en c++

cs_myckie Messages postés 50 Date d'inscription vendredi 19 mai 2006 Statut Membre Dernière intervention 2 juillet 2016 - 10 avril 2008 à 14:05
cs_myckie Messages postés 50 Date d'inscription vendredi 19 mai 2006 Statut Membre Dernière intervention 2 juillet 2016 - 10 avril 2008 à 22:24
Bonjour, j'aimerai savoir s'il existe un ou des tutos pour coder (simplement si possible) un programme qui effectue un ping pour verifier si une machine sur le reseaux répond ou pas, j'ai dejas tester avec icmpapi.h mais dès que j'inclue le .h il me fait des erreurs lors de la compilation (même sans avoir commencé a coder) voila merci d'avance je precise je code en c++ avec visual studio 2005 

2 réponses

cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
10 avril 2008 à 16:14
Bonjour,

Voila la fonction que j'utilise pour savoir si je suis connecté à Internet. Elle réalise un ping sur un site dont on passe l'adresse en paramètre : "microsoft.com" ou "192.168.0.2".


 Le PC étant connecté via un modem/routeur, les méthodes classiques ne marchent pas; elles répondent toujours oui, ce qui est vrai puisque le PC est toujours connecté ... au modem/routeur ! Avec le ping on est sûr d'être réellement connecté à Internet.

bool IsWebConnected
(
   const char* pszWebSite // I:website to ping
)                         // O:Web connected
{
   // --- Quit if incorrect website to ping
   if (pszWebSite == NULL) return false; // no string
   if (*pszWebSite == 0) return false; // empty string





   // --- Initialise the use of "Ws2_32.dll"
   WSADATA WSAData;
   if (WSAStartup(MAKEWORD(2,2),&WSAData) != 0) return false;



  
   // --- Create a socket that is bound to a specific service provider
   SOCKET Socket = socket(AF_INET,SOCK_STREAM,0);
   if (Socket == INVALID_SOCKET)
   {
      WSACleanup();
      return false;
   }



  
   // --- Retrieve the host information
   // --- corresponding to a host name from a host database
   bool     bRet = false;
   HOSTENT* Host = gethostbyname(pszWebSite);
   if (Host)
   {
      SOCKADDR_IN SocketIn;
      SocketIn.sin_family           = AF_INET;
      SocketIn.sin_port             = htons(80); // HTTP port
      SocketIn.sin_addr.S_un.S_addr = (DWORD)*((DWORD*)Host->h_addr_list[0]);      if (connect(Socket,(SOCKADDR*)&SocketIn,sizeof(SOCKADDR_IN)) 0) bRet true;
   }





   // --- Release the resources
   closesocket(Socket);
   WSACleanup();
   return bRet;
}








Jean-François
0
cs_myckie Messages postés 50 Date d'inscription vendredi 19 mai 2006 Statut Membre Dernière intervention 2 juillet 2016
10 avril 2008 à 22:24
merci jfrancois pour ta reponse mais je cherche un tuto car les socket et moi sa fait 2 lol
0