请教一下在VC中如何判断一个ip是否可以PING通?
即bool ping(dword ip)函数如何实现?效率最好高一点,谢谢!
[解决办法]
DWORD SendARP( __in IPAddr DestIP, __in IPAddr SrcIP, __out PULONG pMacAddr, __inout PULONG PhyAddrLen);
[解决办法]
你看看ping的源代码http://blog.csdn.net/VisualEleven/archive/2010/04/21/5512462.aspx
[解决办法]
发个高端口UDP数据包过去,看会不会回一个端口不可达的ICMP包,有就通没有就不通
[解决办法]
发ICMP的ping包
貌似楼上的有直接提供源码的。有的话就直接用吧
[解决办法]
参看以下代码
.h
#include <IPHlpApi.h>#pragma comment(lib, "iphlpapi.lib")class CPing{public: CPing(void); ~CPing(void);private: HINSTANCE hIcmp; typedef HANDLE (WINAPI *PIcmpCreateFile)(VOID); typedef DWORD (WINAPI *PIcmpSendEcho)(HANDLE, IPAddr, LPVOID, WORD, PIP_OPTION_INFORMATION, LPVOID, DWORD, DWORD); typedef BOOL (WINAPI *PIcmpCloseHandle)(HANDLE); PIcmpCreateFile pIcmpCreateFile; PIcmpSendEcho pIcmpSendEcho; PIcmpCloseHandle pIcmpCloseHandle;public: //功能:ping某个地址或者Ip,返回结果 //参数:v_pszDesAddress-目标域名或者IP //参数:v_usTimes-需要ping的次数 //参数:v_ulTimeout-超时时间,单位毫秒 //返回值:-1-发生异常,其他大于等于0的值表示未超时的次数 int Ping(const char *v_pszDesAdress, USHORT v_usTimes, ULONG v_ulTimeout);};
[解决办法]
InternetCheckConnection
[解决办法]