VB如何判断网络不通
VB如何判断网络不通
[解决办法]
方法一:
Const INADDR_NONE As Long = &HFFFFFFFF
Const PING_TIMEOUT As Long = 500
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
Declare Function inet_addr Lib "WSOCK32.DLL " (ByVal s As String) As Long
Declare Function IcmpCreateFile Lib "icmp.dll " () As Long
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
Declare Function IcmpCloseHandle Lib "icmp.dll " (ByVal IcmpHandle As Long) As Long
Function Ping(ip As String) As Boolean
Dim Echo As icmp_echo_reply
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
If Echo.Status = 0 Then Ping = True Else Ping = False
End If
End Function
Sub Command1_Click()
If Ping( "172.16.17.175 ") Then MsgBox "ping成功 " Else MsgBox "ping失敗 "
End Sub