vb6.0怎么实现ping,当不通时,丢包超过10个时才提示网络不通
用ping实现,当丢包超过十个时才提示网络不通
[解决办法]
新建一个模块,名字任意,把以下代码复制进去
Option ExplicitPublic Const INADDR_NONE As Long = &HFFFFFFFFPublic Const PING_TIMEOUT As Long = 1000Public Type ICMP_ECHO_REPLY Address As Long status As Long RoundTripTime As Long DataSize As Long DataPointer As Long Data As String * 250End TypePublic ECHO As ICMP_ECHO_REPLYPublic Declare Function inet_addr Lib "WSOCK32.DLL" (ByVal s As String) As LongPublic Declare Function IcmpCreateFile Lib "icmp.dll" () As LongPublic Declare Function IcmpSendEcho Lib "icmp.dll" (ByVal IcmpHandle As Long, _ ByVal DestinationAddress As Long, ByVal RequestData As String, ByVal RequestSize As Long, _ ByVal RequestOptions As Long, ReplyBuffer As ICMP_ECHO_REPLY, ByVal ReplySize As Long, _ ByVal Timeout As Long) As LongPublic Declare Function IcmpCloseHandle Lib "icmp.dll" (ByVal IcmpHandle As Long) As LongPublic Function Ping(ip As String) As Integer Dim mystr As String Dim hPort As Long mystr = inet_addr(ip) If mystr <> INADDR_NONE Then hPort = IcmpCreateFile() If hPort Then Call IcmpSendEcho(hPort, mystr, 0, 0, 0, ECHO, Len(ECHO), PING_TIMEOUT) '发送回响请求报文,返回回响应答报文 Call IcmpCloseHandle(hPort) End If Ping = ECHO.RoundTripTime' If ECHO.status = 0 Then ping = True Else ping = False' MsgBox ECHO.Address '显示网络计算机地址' MsgBox ECHO.RoundTripTime & " ms" '显示网络链接延迟时间' MsgBox ECHO.DataSize & " bytes 显示数据包大小"' MsgBox ECHO.DataPointer End IfEnd Function