私有常量MIN_SOCKETS_REQD As Long = 1
私有常量WS _ VERSION _ REQD As Long = & ampH101
私有常量WS _ VERSION _ MAJOR As Long = WS _ VERSION _ REQD \ & amp;H100和& ampHFF & amp;
私有常量WS _ VERSION _ MINOR As Long = WS _ VERSION _ REQD And & amp;HFF & amp;
私有聲明函數WSAStartupInfo Lib "WSOCK32 "別名" wsa startup "(ByVal wVersionRequested As Integer,lpWSADATA As WSAData)為Long
私有聲明函數WSAGetLastError Lib "WSOCK32 "()為Long
私有聲明函數inet _ addr Lib“ws2 _ 32 . dll”(ByVal CP作為字符串)為Long
私有聲明函數get hostname Lib " wsock 32 "(ByVal SZ host為String,ByVal dwHostLen為Long)為Long
private Declare Sub CopyMemoryIP Lib " kernel 32 " Alias " RtlMoveMemory "(HPV dest As Any,ByVal hpvSource As Long,ByVal cbCopy As Long)
Ping功能
私有常量ERROR_SUCCESS = 0
私有常量SOCKET_ERROR = -1
私有類型WSAData
整數形式的wVersion
整數形式的wHighVersion
字節形式的szDescription(0到255)
以字節表示的szSystemStatus(0到128)
整數形式的iMaxSockets
iMaxUdpDg為整數
lpVendorInfo為Long
結束類型
私人型寄宿者
名字壹樣長
hAliases壹樣長
hAddrType為整數
hLen為整數
hAddrList As Long
結束類型
私有類型IP選項信息
TTL作為字節
Tos為字節
標誌為字節
選項盡可能長
OptionsData As String * 128
結束類型
私有類型IP_ECHO_REPLY
以字節表示的地址(0至3)
狀態為長
往返時間壹樣長
數據大小為整數
保留為整數
數據長度
作為IP_OPTION_INFORMATION的選項
結束類型
私有聲明函數gethostbyname Lib " wsock 32 . dll "(ByVal HostName作為字符串)為Long
私有聲明函數wsa startup Lib " wsock 32 . dll "(ByVal wVersionRequired & amp;,lpWSADATA As WSAData)壹樣長
私有聲明函數WSACleanup Lib "wsock32.dll "()為Long
private Declare Sub copy memory Lib " kernel 32 " Alias " RtlMoveMemory "(HPV dest As Any,hpvSource As Any,ByVal cbCopy As Long)
私有聲明函數IcmpCreateFile Lib "icmp.dll "()為Long
私有聲明函數IcmpCloseHandle Lib " icmp . dll "(ByVal HANDLE As Long)為布爾值
私有聲明函數IcmpSendEcho Lib " ICMP "(ByVal ICM handle為Long、ByVal DestAddress為Long、ByVal RequestData為String、ByVal RequestSize為Integer、RequestOptns為IP_OPTION_INFORMATION、ReplyBuffer為IP_ECHO_REPLY、ByVal ReplySize為Long、ByVal Timeout為Long)為布爾值
函數Ping(strServer As String)壹樣長
將主機名隱藏為字符串
Dim hFile為Long,lpWSADATA為WSADATA
Dim hHostent為Hostent,AddrList為Long
Dim地址為長,rIP為字符串
dim opti info As IP _ OPTION _ INFORMATION
Dim EchoReply作為IP_ECHO_REPLY
HostName = strServer
調用wsa startup(& amp;H101,lpWSADATA)
If gethostbyname(主機名+字符串(64 - Len(主機名),0))& lt;& gt那麽SOCKET_ERROR
CopyMemory hHostent.hName,ByVal gethostbyname(主機名+字符串(64 - Len(主機名),0)),Len(hHostent)
CopyMemory AddrList,ByVal hHostent.hAddrList,4
復制存儲地址,ByVal AddrList,4
如果…就會結束
hFile = IcmpCreateFile()
如果hFile = 0,則
調試。打印“失敗!”"無法創建文件句柄"
退出功能
如果…就會結束
OptInfo。TTL = 255
如果IcmpSendEcho(hFile,Address,String(32," A "),32,OptInfo,EchoReply,Len(EchoReply) + 8,3000)則
rIP = CStr(EchoReply。地址(0)) +" "+ CStr(EchoReply。地址(1)) +" "+ CStr(EchoReply。地址(2)) +“”+ CStr(EchoReply。地址(3))
其他
調試。打印“超時!”超時
如果…就會結束
如果EchoReply。那麽狀態= 0
Ping = Trim$(CStr(EchoReply。往返時間))
調試。打印在"+ Trim$(CStr(EchoReply)之後收到的" Reply from " + HostName + " (" + rIP +")。round time))+"毫秒"
其他
調試。打印“獲取IP失敗...”
如果…就會結束
調用IcmpCloseHandle(hFile)
調用WSACleanup
結束功能
私有子命令1_Click()
MsgBox Ping(Text1)
末端接頭
壹個窗體窗口,壹個command1按鈕,復制代碼。
您可以在運行時文本中輸入IP地址或域名。