读书人

请问一下在VC中怎么判断一个ip是否可以

发布时间: 2012-06-19 14:45:20 作者: rapoo

请教一下在VC中如何判断一个ip是否可以PING通?
即bool ping(dword ip)函数如何实现?效率最好高一点,谢谢!

[解决办法]

C/C++ code
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
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
[解决办法]
探讨
IPHlpApi这个库和头文件vc6.0不支持,和GDI+好像也有冲突

[解决办法]
来晚了,都答过啦。。。。。

什么叫数据发送不完整???

读书人网 >VC/MFC

热点推荐