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

请教一下在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.****.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+好像也有冲突

------解决方案--------------------
来晚了,都答过啦。。。。。

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