请问一下在VC中怎么判断一个ip是否可以PING通
请教一下在VC中如何判断一个ip是否可以PING通?
即bool ping(dword ip)函数如何实现?效率最好高一点,谢谢!
------解决方案--------------------
即bool ping(dword ip)函数如何实现?效率最好高一点,谢谢!
------解决方案--------------------
- C/C++ code
DWORD SendARP( __in IPAddr DestIP, __in IPAddr SrcIP, __out PULONG pMacAddr, __inout PULONG PhyAddrLen );
------解决方案--------------------
你看看ping的源代码http://blog.****.net/VisualEleven/archive/2010/04/21/5512462.aspx
------解决方案--------------------
发个高端口UDP数据包过去,看会不会回一个端口不可达的ICMP包,有就通没有就不通
------解决方案--------------------
发ICMP的ping包
貌似楼上的有直接提供源码的。有的话就直接用吧
------解决方案--------------------
参看以下代码
.h
- C/C++ code
#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
------解决方案--------------------
------解决方案--------------------
来晚了,都答过啦。。。。。
什么叫数据发送不完整???