vb6.0如何实现ping,当不通时,丢包超过10个时才提示网络不通
vb6.0怎么实现ping,当不通时,丢包超过10个时才提示网络不通
用ping实现,当丢包超过十个时才提示网络不通
------解决方案--------------------
新建一个模块,名字任意,把以下代码复制进去
用ping实现,当丢包超过十个时才提示网络不通
------解决方案--------------------
新建一个模块,名字任意,把以下代码复制进去
- VB code
Option Explicit Public Const INADDR_NONE As Long = &HFFFFFFFF Public Const PING_TIMEOUT As Long = 1000 Public Type ICMP_ECHO_REPLY Address As Long status As Long RoundTripTime As Long DataSize As Long DataPointer As Long Data As String * 250 End Type Public ECHO As ICMP_ECHO_REPLY Public Declare Function inet_addr Lib "WSOCK32.DLL" (ByVal s As String) As Long Public Declare Function IcmpCreateFile Lib "icmp.dll" () As Long Public 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 Long Public Declare Function IcmpCloseHandle Lib "icmp.dll" (ByVal IcmpHandle As Long) As Long Public 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 If End Function