用vb来Ping的源代码

VBS 批量Ping的项目实现 本文用vb编写的 ping程序实现,具体如下:12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311 阅读详情

 Option Explicit
 
Public Const IP_STATUS_BASE = 11000
Public Const IP_SUCCESS = 0
Public Const IP_BUF_TOO_SMALL = (11000 + 1)
Public Const IP_DEST_NET_UNREACHABLE = (11000 + 2)
Public Const IP_DEST_HOST_UNREACHABLE = (11000 + 3)
Public Const IP_DEST_PROT_UNREACHABLE = (11000 + 4)
Public Const IP_DEST_PORT_UNREACHABLE = (11000 + 5)
Public Const IP_NO_RESOURCES = (11000 + 6)
Public Const IP_BAD_OPTION = (11000 + 7)
Public Const IP_HW_ERROR = (11000 + 8)
Public Const IP_PACKET_TOO_BIG = (11000 + 9)
Public Const IP_REQ_TIMED_OUT = (11000 + 10)
Public Const IP_BAD_REQ = (11000 + 11)
Public Const IP_BAD_ROUTE = (11000 + 12)
Public Const IP_TTL_EXPIRED_TRANSIT = (11000 + 13)
Public Const IP_TTL_EXPIRED_REASSEM = (11000 + 14)
Public Const IP_PARAM_PROBLEM = (11000 + 15)
Public Const IP_SOURCE_QUENCH = (11000 + 16)
Public Const IP_OPTION_TOO_BIG = (11000 + 17)
Public Const IP_BAD_DESTINATION = (11000 + 18)
Public Const IP_ADDR_DELETED = (11000 + 19)
Public Const IP_SPEC_MTU_CHANGE = (11000 + 20)
Public Const IP_MTU_CHANGE = (11000 + 21)
Public Const IP_UNLOAD = (11000 + 22)
Public Const IP_ADDR_ADDED = (11000 + 23)
Public Const IP_GENERAL_FAILURE = (11000 + 50)
Public Const MAX_IP_STATUS = 11000 + 50
Public Const IP_PENDING = (11000 + 255)
Public Const PING_TIMEOUT = 200
Public Const WS_VERSION_REQD = &H101
Public Const WS_VERSION_MAJOR = WS_VERSION_REQD / &H100 And &HFF&
Public Const WS_VERSION_MINOR = WS_VERSION_REQD And &HFF&
Public Const MIN_SOCKETS_REQD = 1
Public Const SOCKET_ERROR = -1
 
Public Const MAX_WSADescription = 256
Public Const MAX_WSASYSStatus = 128
 
Public Type ICMP_OPTIONS
Ttl As Byte
Tos As Byte
Flags As Byte
OptionsSize As Byte
OptionsData As Long
End Type
 
Dim ICMPOPT As ICMP_OPTIONS
 
Public Type ICMP_ECHO_REPLY
Address As Long
status As Long
RoundTripTime As Long
DataSize As Integer
Reserved As Integer
DataPointer As Long
Options As ICMP_OPTIONS
Data As String * 250
End Type
 
Public Type HOSTENT
hName As Long
hAliases As Long
hAddrType As Integer
hLen As Integer
hAddrList As Long
End Type
 
Public Type WSADATA
wVersion As Integer
wHighVersion As Integer
szDescription(0 To MAX_WSADescription) As Byte
szSystemStatus(0 To MAX_WSASYSStatus) As Byte
wMaxSockets As Integer
wMaxUDPDG As Integer
dwVendorInfo As Long
End Type
 
 
Public Declare Function IcmpCreateFile Lib "icmp.dll" () As Long
 
Public Declare Function IcmpCloseHandle Lib "icmp.dll" _
(ByVal IcmpHandle As Long) As Long
 
Public Declare Function IcmpSendEcho Lib "icmp.dll" _
(ByVal IcmpHandle As Long, _
ByVal DestinationAddress As Long, _
ByVal RequestData As String, _
ByVal RequestSize As Integer, _
ByVal RequestOptions As Long, _
ReplyBuffer As ICMP_ECHO_REPLY, _
ByVal ReplySize As Long, _
ByVal Timeout As Long) As Long
 
Public Declare Function WSAGetLastError Lib "WSOCK32.DLL" () As Long
 
Public Declare Function WSAStartup Lib "WSOCK32.DLL" _
(ByVal wVersionRequired As Long, _
lpWSADATA As WSADATA) As Long
 
Public Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long
 
Public Declare Function gethostname Lib "WSOCK32.DLL" _
(ByVal szHost As String, _
ByVal dwHostLen As Long) As Long
 
Public Declare Function gethostbyname Lib "WSOCK32.DLL" _
(ByVal szHost As String) As Long
 
Public Declare Sub RtlMoveMemory Lib "kernel32" _
(hpvDest As Any, _
ByVal hpvSource As Long, _
ByVal cbCopy As Long)
 
 
Public Function GetStatusCode(status As Long) As String
 
Dim msg As String
 
Select Case status
Case IP_SUCCESS: msg = "ip success"
Case IP_BUF_TOO_SMALL: msg = "ip buf too_small"
Case IP_DEST_NET_UNREACHABLE: msg = "ip dest net unreachable"
Case IP_DEST_HOST_UNREACHABLE: msg = "ip dest host unreachable"
Case IP_DEST_PROT_UNREACHABLE: msg = "ip dest prot unreachable"
Case IP_DEST_PORT_UNREACHABLE: msg = "ip dest port unreachable"
Case IP_NO_RESOURCES: msg = "ip no resources"
Case IP_BAD_OPTION: msg = "ip bad option"
Case IP_HW_ERROR: msg = "ip hw_error"
Case IP_PACKET_TOO_BIG: msg = "ip packet too_big"
Case IP_REQ_TIMED_OUT: msg = "ip req timed out"
Case IP_BAD_REQ: msg = "ip bad req"
Case IP_BAD_ROUTE: msg = "ip bad route"
Case IP_TTL_EXPIRED_TRANSIT: msg = "ip ttl expired transit"
Case IP_TTL_EXPIRED_REASSEM: msg = "ip ttl expired reassem"
Case IP_PARAM_PROBLEM: msg = "ip param_problem"
Case IP_SOURCE_QUENCH: msg = "ip source quench"
Case IP_OPTION_TOO_BIG: msg = "ip option too_big"
Case IP_BAD_DESTINATION: msg = "ip bad destination"
Case IP_ADDR_DELETED: msg = "ip addr deleted"
Case IP_SPEC_MTU_CHANGE: msg = "ip spec mtu change"
Case IP_MTU_CHANGE: msg = "ip mtu_change"
Case IP_UNLOAD: msg = "ip unload"
Case IP_ADDR_ADDED: msg = "ip addr added"
Case IP_GENERAL_FAILURE: msg = "ip general failure"
Case IP_PENDING: msg = "ip pending"
Case PING_TIMEOUT: msg = "ping timeout"
Case Else: msg = "unknown msg returned"
End Select
 
GetStatusCode = CStr(status) & " [ " & msg & " ]"
 
End Function
 
 
Public Function HiByte(ByVal wParam As Integer)
 
HiByte = wParam / &H100 And &HFF&
 
End Function
 
 
Public Function LoByte(ByVal wParam As Integer)
 
LoByte = wParam And &HFF&
 
End Function
 
 
Public Function PingEcho(szAddress As String, Echo As ICMP_ECHO_REPLY) As Long
 
Dim hPort As Long
Dim dwAddress As Long
Dim sDataToSend As String
Dim iOpt As Long
 
sDataToSend = "Echo This"
dwAddress = AddressStringToLong(szAddress)
 
Call SocketsInitialize
hPort = IcmpCreateFile()
 
If IcmpSendEcho(hPort, _
dwAddress, _
sDataToSend, _
Len(sDataToSend), _
0, _
Echo, _
Len(Echo), _
PING_TIMEOUT) Then
 
'the ping succeeded,
'.Status will be 0
'.RoundTripTime is the time in ms for
' the ping to complete,
'.Data is the data returned (NULL terminated)
'.Address is the Ip address that actually replied
'.DataSize is the size of the string in .Data
PingEcho = Echo.RoundTripTime
Else: PingEcho = Echo.status * -1
End If
 
Call IcmpCloseHandle(hPort)
Call SocketsCleanup
 
End Function
 
 
Function AddressStringToLong(ByVal tmp As String) As Long
 
Dim i As Integer
Dim parts(1 To 4) As String
 
i = 0
 
'we have to extract each part of the
'123.456.789.123 string, delimited by
'a period
While InStr(tmp, ".") > 0
i = i + 1
parts(i) = Mid(tmp, 1, InStr(tmp, ".") - 1)
tmp = Mid(tmp, InStr(tmp, ".") + 1)
Wend
 
i = i + 1
parts(i) = tmp
 
If i <> 4 Then
AddressStringToLong = 0
Exit Function
End If
 
'build the long value out of the
'hex of the extracted strings
AddressStringToLong = Val("&H" & Right("00" & Hex(parts(4)), 2) & _
Right("00" & Hex(parts(3)), 2) & _
Right("00" & Hex(parts(2)), 2) & _
Right("00" & Hex(parts(1)), 2))
 
End Function
 
 
Public Function SocketsCleanup() As Boolean
 
Dim X As Long
 
X = WSACleanup()
 
If X <> 0 Then
MsgBox "Windows Sockets error " & Trim$(str$(X)) & _
" occurred in Cleanup.", vbExclamation
SocketsCleanup = False
Else
SocketsCleanup = True
End If
 
End Function
 
 
Public Function SocketsInitialize() As Boolean
 
Dim WSAD As WSADATA
Dim X As Integer
Dim szLoByte As String, szHiByte As String, szBuf As String
 
X = WSAStartup(WS_VERSION_REQD, WSAD)
 
If X <> 0 Then
MsgBox "Windows Sockets for 32 bit Windows " & _
"environments is not successfully responding."
SocketsInitialize = False
Exit Function
End If
 
If LoByte(WSAD.wVersion) < WS_VERSION_MAJOR Or _
(LoByte(WSAD.wVersion) = WS_VERSION_MAJOR And _
HiByte(WSAD.wVersion) < WS_VERSION_MINOR) Then
 
szHiByte = Trim$(str$(HiByte(WSAD.wVersion)))
szLoByte = Trim$(str$(LoByte(WSAD.wVersion)))
szBuf = "Windows Sockets Version " & szLoByte & "." & szHiByte
szBuf = szBuf & " is not supported by Windows " & _
"Sockets for 32 bit Windows environments."
MsgBox szBuf, vbExclamation
SocketsInitialize = False
Exit Function
 
End If
 
If WSAD.wMaxSockets < MIN_SOCKETS_REQD Then
szBuf = "This application requires a minimum of " & _
Trim$(str$(MIN_SOCKETS_REQD)) & " supported sockets."
MsgBox szBuf, vbExclamation
SocketsInitialize = False
Exit Function
End If
 
SocketsInitialize = True
 
End Function
 
'--end block--'
 
 
''Form Code
''
''To a form add a command button (Command1), two text boxes (Text3, Text4) and
''six text boxes in a control array (Text1(0) - Text1(5)). The
''labels are optional. Add the following to the command button:
''
''
''
''Option Explicit
 
''Private Sub Command1_Click()
''
''Dim ECHO As ICMP_ECHO_REPLY
''Dim pos As Integer
''
'''ping an ip address, passing the
'''address and the ECHO structure
''Call Ping("209.68.48.118", ECHO)
''
'''display the results from the ECHO structure
''Text1(0) = GetStatusCode(ECHO.status)
''Text1(1) = ECHO.Address
''Text1(2) = ECHO.RoundTripTime & " ms"
''Text1(3) = ECHO.DataSize & " bytes"
''
''If Left$(ECHO.Data, 1) <> Chr$(0) Then
''pos = InStr(ECHO.Data, Chr$(0))
''Text1(4) = Left$(ECHO.Data, pos - 1)
''End If
''
''Text1(5) = ECHO.DataPointer
''
''End Sub
 
'--end block--'

''返回值>=0 则为ping通,<0则为错误
Public Function PingIP(ByVal IpAddr As String) As Long
Dim Echo As ICMP_ECHO_REPLY
PingIP = PingEcho(IpAddr, Echo)
End Function

VB实现多IP并发Ping程序及源码 命名空间提供了用于访问有关本地计算机网络配置信息和当前网络通信状态的类。这个命名空间中的类可以用于监测网络连接,获取网络接口的状态,以及执行网络相关的诊断任务,如 Ping 操作。它包含的类可以用来获取网络配置信息,比如IP地址、子网掩码、默认网关,以及物理和逻辑网络适配器的状态。这对于开发网络监控工具和诊断网络问题的应用程序非常有用。在安装完成后,程序会创建一个图标在桌面上,用户可以通过双击图标来启动程序。程序启动后,会展示一个简洁的操作界面:输入框。 阅读详情

相关推荐

VB使用Ping命令检查网络连接状态

内容索引:VB源码,网络相关,Ping  VB使用Ping命令检查网络就否连接到网络,在程序中建立一个Bat 档,设定Ping 一个在 Internet 上的 Server 两次,将结果写入文字档 Test.txt,我们以 Ping www.okbase.net 为例,如果Ping 成功,则跳出一个窗口告之,并写入Test.txt文档,注意写入Test.txt 的字串长度至少会大于200。由于 Ping 的动作会延迟几秒钟,所以,我们也会等待几秒钟。

vb ping 计算机名称,Ping用VB实现的主要算法

Ping用VB实现的主要算法作者:junyuqin 日期:2007-04-18字体大小: 小 中 大 Ping 命令通过向计算机发送 ICMP 回应报文并且监听回应报文的返回,以校验与远程计算机或本地计算机的连接。对于每个发送报文, Ping 最多等待 1 秒,并打印发送和接收把报文的数量。比较每个接收报文和发送报文,以校验其有效性。ping 函数 Ping(){判断Sockets有无初始化...

weixin_30587271的博客 589

VB 实现PING功能

VB PING 网络 VB PING 网络 VB PING 网络

vb纯api实现ping主机(仅仅返回是否ping通)

modPing.basAttribute VB_Name = "modPing"modPingMsgBox IPValid("10.167.133.205")Option ExplicitPrivate Const IP_STATUS_BASE = 11000Private Const IP_SUCCESS = 0Private Const IP_BUF_TOO

两天打鱼三天晒网 3209

vba使用ping测试网络通断 32位

在vba中可以使用ping ip地址的功能. 直接调用PingIP(ip地址)即可,返回值true为能ping通,false为ping不通。 例如PingIP(“192.168.100.75”)如果能ping通返回为true,不能ping通返回为false。

vb源码 -用ping命令监控局域网内主机

vb源码 -用ping命令监控局域网内主机(适用于监控服务器交换机等设备)

写了个 Ping 模块 很实用!

今天周末,看见同事为写一个Ping程序着急,我就写了个Ping函数,呵呵,在这里贴出来,想要的同志可以“剪”去,算是我送给大家的一个小礼物!图:Ping通的情况图:Ping失败的情况下面是源代码(VB6):(完善的出错控制,所以是个好函数)Option ExplicitPrivate Const IP_SUCCESS As Long = 0Private Const

唐古拉山的专栏 3794

VB实现ping功能

如何用VB实现PING呢?看看这个程序吧,很简单的实现了,而且还带有托盘图标,大家可以看下,不懂的话可以问我!

[转] VB的Ping 模块

图:Ping通的情况 图:Ping失败的情况 下面是源代码(VB6):(完善的出错控制,所以是个好函数) Option Explicit Private Const IP_SUCCESS As Long = 0Private Const IP_STATUS_BASE As Long = 11000Private Const IP_BUF_TOO_SMALL As Long = (1...

weixin_30825199的博客 198

如何Ping一个IP地址程序(visual studio VB源代码编写)对今后学习vb.net很帮助

如何Ping一个IP地址程序(visual studio VB源代码编写)对今后学习vb.net很帮助

VB程序实例-ping对方计算机.zip

VB程序实例,可供参考学习使用,希望对你有所帮助

如何用winsock实现ping(源代码)

/*This is a sample routine of ping.Its implemented with winsock1.1 * under windows 2000 professional and has been not tested under other * platform.Our target is to illustrator the principles,so many

layman2003的专栏 1469

尚硅谷Redis 7学习笔记

尚硅谷Redis 7学习笔记

不更了,主打一个陪伴 2万+

vb/vb.net百科技术文章精粹(1)

VB中用CommonDialog       如何设置   保存的文件夹名?   [控件]   $$winsock接收文件问题 如何在Winform里控制Web页面,填写表单,提交 如何显示指定文件名的ACCESS   查询或窗体 用VB+SQL   SERVER编程

师以长技以制夷 722

从零构建锂电池主动均衡系统:Simulink仿真中的Buck-Boost拓扑实战指南

本文详细介绍了如何在Simulink中从零构建基于Buck-Boost拓扑的锂电池主动均衡系统。通过仿真环境搭建、参数优化、控制策略设计和性能评估,为工程师提供了完整的实战指南,帮助快速验证和优化均衡算法,提升电池组一致性与寿命。

gitlab7runner的博客 896

再见 n8n?Google Opal 实测:一句话生成 APP,这才是 AI 的正确打开方式!

Google Opal深度评测:这款自然语言生成工作流的AI工具,通过三个实战案例(科技早报生成器、冰箱食谱助手、爆款文案转译机)展示了其零代码开发的强大能力。它凭借Gemini 3.0 Pro和Google生态的无缝集成,将自动化门槛降至新低,预示着一个“意图驱动开发”的新时代。

莫潇羽的个人博客 848

vb/vb.net开发精粹

其它文件里调用宏,如何会有问题——————————? VB中如何通过对话框可以选择路径(文件夹)? 如何让Textbox在得到光标的同时,按下Enter键才响应一个事件??? EXCEL   VBA   的好多资料啊 如何样能够做到在LISTVIEW控件里,对于显示的每一

师以长技以制夷 876

物联网开发131 - Micropython ESP32 C3连接TB6600驱动42BYGH39步进电机

如何使用合宙ESP32 C3连接TB6600驱动42BYGH39步进电机,实现控制步进电机正反转和旋转指定角度等

zhusongziye的博客 2371

vb/vb.net开发实战之经验分享(1)

pciture图片操作,验证码识别? WINSOCK文件传输问题 text文本显示数字的问题! VBA   excel简单应用,新手求源代码,有效便散分---在一批10万个物料中筛选出其中的3000个左右的坏件?(坏件有唯一物料编码,且已知) usb接口的   zebro

师以长技以制夷 966

捷联惯导,其实没有你想象的那么复杂!(附:惯导嵌入式应用中需要的一些C代码)

摘要:捷联惯导系统将惯性测量单元固连于运动载体,通过核心算法实现导航解算。系统首先进行传感器误差补偿和初始对准,然后利用陀螺和加速度计数据,通过姿态更新算法(如四元数法)计算载体相对于地理系的姿态。加速度数据经比力方程转换后积分得到速度和位置,过程中需补偿圆锥误差和划船效应。捷联惯导通过数字平台替代物理平台,实现了载体坐标系与导航坐标系的实时转换,是当前惯性导航系统的主流方案。

victoryqian528的博客 269

CATIA二次开发一一一装配体与零件之间的坐标转换

输入参数:Product(产品实例对象)、iPointToTransfor(待转换坐标点CATMathPoint)核心逻辑:通过产品对象的绝对位置变换矩阵,计算逆向变换实现坐标系转换。输出参数:Point(转换后的局部坐标点CATMathPoint)

工业软件开发 1129
上一篇: 如何查看SQL Server 补丁的版本?
下一篇: 阿江的WINDOWS服务器安全设置
lanman
博客等级 码龄25年 56粉丝 101原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值