cs_myckie
Messages postés50Date d'inscriptionvendredi 19 mai 2006StatutMembreDernière intervention 2 juillet 2016
-
10 avril 2008 à 14:05
cs_myckie
Messages postés50Date d'inscriptionvendredi 19 mai 2006StatutMembreDerniè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
cs_jfrancois
Messages postés482Date d'inscriptionvendredi 26 août 2005StatutMembreDernière intervention 5 décembre 20092 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;
}