废话不说, 贴码 BOOL SendIcmp(const char *descIp, DWORD dwTimeOut = 1000) { ULONG toIp = INADDR_NONE; HANDLE hIcmpFile; DWORD dwRetVal = 0; char sendData[] = "Data Buffer"; LPVOID replyBuffer = NULL; DWORD replySize = 0; toIp = inet_addr(descIp); hIcmpFile = IcmpCreateFile(); if(hIcmpFile == INVALID_HANDLE_VALUE) { printf("IcmpCreatefile returned error: %ld/n", GetLastError()); return FALSE; } replySize = 8 * (sizeof(ICMP_ECHO_REPLY)) + sizeof(sendData); replyBuffer = (VOID *)malloc(replySize); dwRetVal = IcmpSendEcho2(hIcmpFile, NULL, NULL, NULL, toIp, sendData, sizeof(sendData), NULL, replyBuffer, replySize, dwTimeOut); if(dwRetVal == 0) { printf("IcmpSendEcho2 returned error: %ld/n", GetLastError()); return FALSE; } free(replyBuffer); return TRUE; }