论坛: 编程破解 标题: [VB原创源代码]用VB实现群Ping功能 复制本贴地址    
作者: jhkdiy [jhkdiy]    版主   登录
用VB实现群ping

作者:jhkdiy
日期:2004-7-21
版权:jhkdiy
转载请保留作者信息 

开发平台:Win2000+VB6中文企业版
测试平台:Win2000、WinXP(我就这两个系统,98下没测试,有98的朋友可以测试一下)

    好久没有出原创了,之前高考,现在放假了,玩了一阵子,今天没什么事,所以就来
介绍这个东东,其实程序很早就写出来了,我记得就在我发表《用VB实现一个完整的端口
扫描器》之后的一段时间,因为程序最重要的群ping就是直接拿扫描器的思想用的。
   
    用VB实现ping功能的程序在网上有一大把,但都是实现对单一的一个IP或域名进行Ping
检查的,但在实际的应用中,我们通常都是对一段IP地址进行Ping检查,那么在Vb中如何
实现群ping的功能呢?如果看过扫描器的朋友就很容易明白,程序仅仅是循环执行ping命令,
然后把ping的返回结果进行处理并显示出来,虽然这样做并不高明,但我当初的目的仅仅就是
为了实现群ping,就此而已;程序还不完善,如对IP地址的检查不够严格,对超时时间的检查
等等。
    ping命令对于用户来讲,最主要的就是检测目标主机是不是可连通。Ping程序实际就
是发送一个ICMP回显请求报文给目的主机,并等待回显的ICMP应答。然后打印出回显的报文。P
ing不通一个地址,并不一定表示这个IP不存在或者没有连接在网络上,因为对方主机可能做
了限制,比如安装了防火墙,因此Ping不通并不表示不能使用FTP或者TELNET连接。PING得到的
结果包括字节数、反应时间、以及生存时间。Ping程序通过在ICMP报文数据中存放发送请求的
时间来计算返回时间。当应答返回时,根据现在时间减去报文中存放的发送时间就得到反应时
间了。生存时间(TTL),本来就存放在IP数据报的头部,直接就能够获取。
    该程序实现对一个或多个IP进行Ping检查,并把结果显示在窗口中,而显示分详细报
告和简明两种,详细报告中的内容和我们在命令窗口中看到的信息是一样的,而简明报告就
只提取响应ping检查的机子,这个在实际应用中很不错,有很多扫描器就是先对一段IP进行P
ing检查,然后排除没有响应Ping的机子,只对响应ping的机子进行端口扫描,这样就提高了
扫描的质量和速度,当然实际中并不这样简单,我们还要多学习网络知识,并对TCP/IP协议有
深入的了解编起网络程序来才会得心应手,大家一起努力吧!
    在编程角度来说,我们要清楚怎样发送ICMP报文,并设置一系列的参数,发送ICMP报
文是由IcmpSendEcho()这个函数执行的:
Declare Function IcmpSendEcho Lib "ICMP" (ByVal IcmpHandle As Long, _
                                          ByVal DestAddress As Long, _
                                          ByVal RequestData As String, _
                                          ByVal RequestSize As Integer, _
                                          RequestOptns As IP_OPTION_INFORMATION, _
                                          ReplyBuffer As IP_ECHO_REPLY, _
                                          ByVal ReplySize As Long, _
                                          ByVal TimeOut As Long _
                                          ) As Boolean

主要参数介绍:
    ' IcmpHandle从函数IcmpCreateFile返回得到
    ' DestAddress是指向地址列表的第一项的指针
    ' RequestData是一个没有结束符的64字节的字符串,里面包含字符的ASCII为170
    ' RequestSize大小为64字节
    ' ReplyBuffer 请求的缓冲区
    ' ReplySize  缓冲区的大小
    ' Timeout 为超时时间

    程序中都有大量的注解,相信大家给点时间是可以看明白的,还值得提的是模块文件
关于Winsock API的函数在自带的API浏览器中是找不到的,如果要使用这些API就直接复制吧,
反正我就是这样做,程序完全使用API和标准控件,所以生成的执行文件应该可以顺利运行在有
MSVBVM60.dll 的机子上。
    好了,有问题或意见可以通过论坛或邮件通知我,欢迎讨论。
程序图片:
 

源代码下载:
  http://free.efile.com.cn/jhkdiy/code/ping.rar


[此贴被 jhkdiy(jhkdiy) 在 07月24日09时12分 编辑过]

地主 发表时间: 04-07-24 00:57

回复: jhkdiy [jhkdiy]   版主   登录
文章格式乱了!大家下载后用最新的Winrar解压缩,文章和Ping命令的详细介绍都在。

B1层 发表时间: 04-07-24 01:00

回复: SilentSlave [silent]   论坛用户   登录


B2层 发表时间: 04-07-24 03:31

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号