一段Ping测试的代码,不知具体意义

一段Ping测试的代码,不知具体意思
本帖最后由 nettt 于 2010-07-20 02:03:56 编辑
//以下是一段PIng测试的代码,
Long ll_hICMP
Long ll_RTN
String ls_Message
Ulong aul_IPAddr

IP_OPTION_INFORMATION lstr_IPInfo
ICMP_ECHO_REPLY lstr_ICMPReplay

//打开ICMP句柄
ll_hICMP = IcmpCreateFile()

If ll_hICMP <> 0 Then

ls_Result = ""
ls_Message = "   "   //???????? 这个有什么用

aul_IPAddr = of_ChangeIPv4ToLong(as_IPaddress) //192.169.5.252

//发送ICMP请求
ll_RTN = IcmpSendEcho (ll_hICMP, aul_IPAddr, ls_Message, Len(ls_Message), 0, lstr_ICMPReplay, 282, 200)
//???????关键是这里不懂,这几个参数都是什么作用,这个Len(ls_Message) 有什么用处,还有能不能用这段代码实现 Ping 2000 的包。
//判断回应状态
If ll_RTN > 0 Then
ls_Result = "Ping 成功,状态值为:" + String(lstr_ICMPReplay.Status) 
Else
ls_Result = "Ping 失败,错误号为:" + String(WSAGetLastError())
End If

//关闭ICMP句柄
IcmpCloseHandle(ll_hICMP)

Return ll_RTN
Else
ls_Result = "无法打开ICMP句柄!"
Return -1;
End If
------解决方案--------------------
同有仔细研究过

函数详细说明:http://msdn.microsoft.com/en-us/library/Aa366051

IcmpSendEcho2的原型如下: 
DWORD   IcmpSendEcho2( 
    HANDLE   IcmpHandle, 
    HANDLE   Event, 
    FARPROC   ApcRoutine, 
    PVOID   ApcContext, 
    IPAddr   DestinationAddress, 
    LPVOID   RequestData, 
    WORD   RequestSize, 
    PIP_OPTION_INFORMATION   RequestOptions, 
    LPVOID   ReplyBuffer, 
    DWORD   ReplySize, 
    DWORD   Timeout 
); 

其中3个参数为结构体: 

1   DestinationAddress   
[in]   Destination   of   the   echo   request,   in   the   form   of   an   IPAddr   structure.   
typedef   struct   { 
    union   { 
        struct   { 
            u_char   s_b1,s_b2,s_b3,s_b4;       
        }   S_un_b; 
        struct   {   
          u_short   s_w1,s_w2; 
        }   S_un_w; 
        u_long   S_addr; 
        }   S_un; 
  }   IPAddr;     
这个不用理它,不管它怎么折腾,固定占四个字节,定义为long