16,472
社区成员
发帖
与我相关
我的任务
分享
typedef struct _ICMP_ECHO_REPLY
{
DWORD Address;
DWORD status;
DWORD RoundTripTime;
DWORD DataSize;
DWORD DataPointer;
char Data[250];
} ICMP_ECHO_REPLY;
DWORD (WINAPI* IcmpCreateFile)();
DWORD (WINAPI* IcmpSendEcho)(DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD);
DWORD (WINAPI* IcmpCloseHandle)(DWORD);
DWORD WINAPI icmpping(char* ipstr,DWORD datalen)/*ipstr是目标机器ip,datalen是数据包大小*/
{
HMODULE hModule;
DWORD hPort,ipaddr;
ICMP_ECHO_REPLY* echo;
char *buf;
hModule = LoadLibrary("icmp.dll");
IcmpCreateFile = GetProcAddress(hModule,"IcmpCreateFile");
IcmpSendEcho = GetProcAddress(hModule,"IcmpSendEcho");
IcmpCloseHandle = GetProcAddress(hModule,"IcmpCloseHandle");
buf = calloc(datalen,1);
ipaddr = inet_addr(ipstr);
hPort = IcmpCreateFile();
IcmpSendEcho(hPort,ipaddr,buf,datalen,0,buf,datalen,0);
IcmpCloseHandle(hPort);
free(buf);
return 0;
}