char Ping()
{
SOCKADDR_IN sin;
SOCKADDR_IN csin;
sin.sin_addr.s_addr = inet_addr(Ip1); // Fonction de convertion d'une chaine de caractère en IPv4
csin.sin_addr.s_addr = inet_addr(Ip2);
if ((pIcmpCreateFile == 0) || (pIcmpSendEcho == 0))
return 2;
// Open the ping service
HANDLE hIP = pIcmpCreateFile();
if (hIP == INVALID_HANDLE_VALUE)
return 3;
// Build ping packet
char acPingBuffer[64];
memset(acPingBuffer, '\xAA', sizeof(acPingBuffer));
PIP_ECHO_REPLY pIpe = (PIP_ECHO_REPLY)GlobalAlloc(
GMEM_FIXED | GMEM_ZEROINIT,
sizeof(IP_ECHO_REPLY) + sizeof(acPingBuffer));
if (pIpe == 0)
return 4;
pIpe->Data = acPingBuffer;
pIpe->DataSize = sizeof(acPingBuffer);
// Send the ping packet
Result1 = pIcmpSendEcho(hIP,sin.sin_addr.S_un.S_addr,
acPingBuffer, sizeof(acPingBuffer), NULL, pIpe,
sizeof(IP_ECHO_REPLY) + sizeof(acPingBuffer), 50);
Result2 = pIcmpSendEcho(hIP,csin.sin_addr.S_un.S_addr,
acPingBuffer, sizeof(acPingBuffer), NULL, pIpe,
sizeof(IP_ECHO_REPLY) + sizeof(acPingBuffer), 50);
// Shut down...
GlobalFree(pIpe);
return 0;
}
Partager