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 TypeDeclare 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 LongPrivate 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 FunctionPrivate Sub Command1_Click() If Ping("202.108.22.44") Then MsgBox "ping成功" Else MsgBox "ping失敗" End Sub
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 TypeDeclare 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 LongPrivate 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 FunctionPrivate Sub Command1_Click()
If Ping("202.108.22.44") Then MsgBox "ping成功" Else MsgBox "ping失敗"
End Sub