首页 | 社区 | 博客 | 招聘 | 文章 | 新闻 | 下载 | 项目交易 | 网友作品 | 读书 | ACM题库 | 源码
亲,您未登录哦! 登录 | 注册

用Delphi实现图形化批量IP检测

(加入日期: 2001-10-09 )

打印文章】【字体:

分享到:
作者:广东南海市公安局计算机安全监察股 喻凯

当要检测的IP比较少时,我们一般直接使用DOS命令Ping来实现。但是,如果我们要检测的IP比较多时(比如一个网段),再用Ping命令就比较繁琐了,即使写一个批处理来实现,大把数据看起来也让人恼火。这里,我们用Delphi实现对批量IP的检测,检测结果用明了的图形显示.

一:程序实现
在这个程序中,我们用TreeView来表示检测的IP结果;用ICS控件组的Ping控件来实现对IP的检测。
一)Ping功能的实现
为了实现Ping功能,我们在ICS的Ping控件基础上写一个函数,函数结果表示IP是否可以Ping通,如果可以,结果为True,反之,为False。函数如下:

//函数Ping
//使用了ICS的Ping控件
Function TMainForm.Ping(strip:string):Boolean;
Begin
//IP地址
ping1.address:=Trim(strip);
Ping1.ping;
//结果
if ping1.ErrorCode=0 then
begin
ping:=True;
end
Else
Begin
ping:=False;
//如果不能Ping通,i加一;
i:=i+1;
End;
End;

函数说明:
参数strip:要检测的ip;
变量i:如果不能Ping通,i加一(注意:I定义为一个全局变量);

二)控件说明
程序中使用控件的属性功能如下:


三)程序代码
主要代码部分如下:
var
MainForm: TMainForm;
//i记录不能Ping通的总数;
i:Integer;

implementation

{$R *.DFM}

Function TMainForm.Ping(strip:string):Boolean;
Begin
ping1.address:=Trim(strip);
Ping1.ping;
if ping1.ErrorCode=0 then
begin
ping:=True;
end
Else
Begin
ping:=False;
i:=i+1;
End;
End;

procedure TMainForm.Button1Click(Sender: TObject);
Var
h:Integer;
treenode1,treenode2:TTreeNode;
begin
//清空所有Item;
TreeView1.Items.Clear;

With TreeView1.Items Do
Begin
//增加根接点;
TreeNode1:=Add(nil, '批量IP检测');
//全部展开所有结点
TreeView1.FullExpand;
//刷新TreeView
TreeView1.Refresh;
//根结点图标
TreeNode1.ImageIndex:=0;
TreeNode1.SelectedIndex:=0;
//二级接点
For h:=StrToInt(Trim(Edit2.Text)) To StrToInt(Trim(Edit3.Text)) Do
Begin
if ping(Trim(Edit1.Text)+'.'+Trim(IntToStr(h)))=True Then
Begin
//如果可以Ping通,图标为0;
TreeNode2:=AddChild(TreeNode1,Trim(Edit1.Text)+'.'+IntToStr(h));
TreeNode2.ImageIndex:=0;
TreeNode2.SelectedIndex:=0;
//全部展开所有结点
TreeView1.FullExpand;
//刷新TreeView
TreeView1.Refresh;
End
Else
Begin
//如果不能Ping通,图标为1
TreeNode2:=AddChild(TreeNode1,Trim(Edit1.Text)+'.'+IntToStr(h));
TreeNode2.ImageIndex:=1;
TreeNode2.SelectedIndex:=1;
//全部展开所有结点
TreeView1.FullExpand;
//刷新TreeView
TreeView1.Refresh;
End;
End;
h:=h+1;
End;
Label4.Caption:='检测结果:'+IntToStr(i)+' 个IP不能Ping通';
Application.MessageBox('检测结束','提示',0);
End;

二:程序说明
一) 以上程序可以实现对一个网段的检测,具体到应用,可以将要检测的IP放入数据库,同时用文字说明IP对应的机构或者计算机。检测时,直接读取数据库记录,将检测结果和数据库中的IP说明相结合,使结果直接具体到计算机名;
二) ICS控间组的Ping控件功能很强,这里只是使用了它的最基本的一个功能,具体应用中,建议更多使用Ping控件的其他属性和功能,比如检测响应时间(ReplyTime)来检测IP状态是否良好。
三) 请勿用以上程序随意实验,以免浪费网络资源;


摘自:计算机世界网

本栏文章均来自于互联网,版权归原作者和各发布网站所有,本站收集这些文章仅供学习参考之用。任何人都不能将这些文章用于商业或者其他目的。( Pfan.cn )

编程爱好者论坛

本栏最新文章