用Delphi实现智能化Ping命令功能


======================================================
注:本文源代码点此下载
======================================================

用delphi实现智能化ping命令功能

2007-11-08 14:21

《软件报》28期

众所周知,ping命令是windows系统自带的一个针对tcp/ip协议的可执行命令,其主要作用是通过发送数据包并接收应答信息来检测两台计算机之间的网络是否连通。当网络出现故障时,可以用这个命令来检测故障和确定故障地点。但在ms-dos方式下执行此命令,而且每秒钟执行一次ping操作,显得似乎有些另类,今天,我们将实现智能化ping命令的功能,并实现操作的可视化。

一、系统ping命令的功能与执行

命令执行格式:ping ip地址 参数

其中,参数最常用的就是-t,用于不间断ping操作。在执行ping的过程中,可以使用pause键暂停,也可以使用ctrl+pause组合键显示截至当前时刻ping操作的总次数、掉包次数以及掉包率,从而判断网络的稳定性。ping命令执行结果返回字节数(bytes)、执行时间(time)、生存时间(ttl)等信息。

二、编程原理

ping命令是属于icmp协议规定的,而icmp是内嵌于ip层的,因此, ping是属于网络层的命令。ping的实现过程很简单,命令将引发ip层发送一个简单的ip包,而目的方收到这个包之后,将源和目的地址做一下交换,重新发出这个包即可。简单来说,为了避免数据包在网路上的传送路径造成死循环或者无休止的投递下去,每个ip数据包都包含一个寿命计数器,这个就是数据包的的生存时间ttl,只要一个路由器处理过这个数据包,它就递减这个数据包的寿命计数,当寿命计数递减到0的时候,路由器就丢弃该包,ttl在一定程度上反应了一个ip数据包经过的路由器的多少。

三、编程实现

在delphi中,我们可以使用idicmpclient组件(位 于indy client选项卡中)实现ping操作。添加此组件到窗体,再添加一个文本框控件edthost(输入ip)、一个列表框控件info(显示信息)、两个命令按钮btnping(执行ping命令)、btnstop(停止ping命令)。设置idicmpclient控件的名称为icmp、 receivetimeout属性(超时)值为1000、onreply事件为icmpreply。合理布局,然后编写程序代码:

var i,b,s:integer; //全局变量

1、执行ping操作

通过icmp控件的host属性设置ping的ip,然后调用控件的ping方法执行ping操作命令。核心代码如下:

procedure tfrmping.btnpingclick(…);

begin

b:=0; //掉包数量

i:=0; //ping的总次数

s:=0; //执行(s=0)或停止(s=1)标志

info.clear; //清除上次ping的信息

icmp.host:=edthost.text; //置ip

while (i关注我收藏该文与我联系


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值