摘要:1//所需的头文件2#include<Winsock2.h>3#include“iphlpapi.h”45#pragmacomment6#pragmacomment78//接口函数:判断IP地址是否可以ping 9//参数:IP地址或域名10BOOLICMPPing11{12 HANDLE iHwnd=IcmpCreateFile();13 char*SendData=“DataBuffer”;14 DWORD dwRet;15 LPVOID ReplyBuffer;16 ReplyBuffer=malloc;17 if((dwRet=IcmpRet SendEcho)(iHwnd,inet_addr(szIP),SendData,strlen(SendData),NULL,ReplyBuffer,18 sizeof(ICMP_ECHO_REPLY)+strlen0)20{21 IcmpCloseHandle;22 returntrue;//您可以ping 23}24 else25{26 IcmpCloseHand;27 returnfalse;//您不能ping 28}29}
以下是判断IP是可以可以ping通的接口及依赖的头文件和库。
1 // 需要的头文件
2 #include <Winsock2.h>
3 #include "iphlpapi.h"
4
5 #pragma comment(lib,"Iphlpapi.lib")
6 #pragma comment(lib,"Ws2_32.lib")
7
8 // 接口功能:判断IP地址是否能ping通
9 // 参数:IP地址或域名
10 BOOL ICMPPing(char* szIP)
11 {
12 HANDLE iHwnd = IcmpCreateFile();
13 char* SendData = "Data Buffer";
14 DWORD dwRet;
15 LPVOID ReplyBuffer;
16 ReplyBuffer = (VOID*)malloc(sizeof(ICMP_ECHO_REPLY) + strlen(SendData));
17 if((dwRet = IcmpSendEcho(iHwnd, inet_addr(szIP), SendData, strlen(SendData), NULL, ReplyBuffer,
18 sizeof(ICMP_ECHO_REPLY) + strlen(SendData) + sizeof(ICMP_ECHO_REPLY),1000))
19 != 0)
20 {
21 IcmpCloseHandle(iHwnd);
22 return true; //可以ping通
23 }
24 else
25 {
26 IcmpCloseHandle(iHwnd);
27 return false; //不可以ping通
28 }
29 }