六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

用Delphi打造圖形界面的Ping程序

[摘要]中共河南省濟源市委黨校,耿百強摘要:本文主要介紹利用Delphi6實現一個圖形界面Ping程序的方法,其中主要討論了ICMP協議和ICMP協議控件及其編程方法,并給出了一個實例程序。解決了Ping命...
中共河南省濟源市委黨校,耿百強

摘要:本文主要介紹利用Delphi6實現一個圖形界面Ping程序的方法,其中主要討論了ICMP協議和ICMP協議控件及其編程方法,并給出了一個實例程序。解決了Ping命令行程序的缺點。
關鍵詞:Delphi,ICMP協議,Ping程序

操作系統:Windows 2000 Server 中文版
編程工具:Delphi 6.0

一、 前言
在日常網絡管理時,我們常用Ping命令來測試是否能與宿主(或路由)連通。但它一般是以命令行的形式提供給我們,不僅使用不方便,而且命令執行速度較快時,常常使我們看不清執行結果。那么,有沒有辦法來解決這個矛盾呢?答案當然是肯定的。下面,我們將利用Delphi強大的網絡編程功能來實現一個圖形化的Ping程序,程序的運行界面如圖1所示。

程序的主要功能:在Address后的編輯框中可以輸入一個計算機的名稱或者IP地址,然后按Ping按鈕或直接按回車可以測試與宿主計算機的連通性,如果連能正常,則在下面的列表框中顯示宿主計算機的IP地址等信息。可以通過Clear功能按鈕實現對列表框信息的清除。
二、 編程原理
ICMP(Internet Control Messages Protocol)是Internet信報控制協議的簡寫,它將報文放在一個IP數據報的數據部分中通過網絡傳送,該協議允許路由器向其它的路由器或者主機發送并且回收差錯與控制報文,它為發生差錯的路由器提供了向源端報告差錯的功能。連通性測試程序Ping正是利用了ICMP協議的這種特性,通過向目的端(宿主)發送并且回收信報來測試端到端的連通性。
Delphi6.0新增了Indy網絡控件組,包括了幾乎所有的網絡協議控件,比如SMTP、POP3、SNMP及ICMP等,避免了程序員直接與WinSocket打交道,大大方便了我們編寫網絡程序。Indy控件組分為Server和Clent兩部分,以適應我們編寫不同的服務器/工作站程序。我們可以很方便的在Indy Clent中找到ICMP協議控件TidIcmpClient。
TidIcmpClient控件的常用屬性如下:
HOST:宿主計算機的IP地址,可以是計算機的名字或者IP地址;
Port:表示接收報文的本地系統的端口號;
ReceiveTimeout:表示連接等待宿主計算機回應的最大時間,單位是毫秒。
TidIcmpClient控件的主要方法:
Ping():檢測本地計算機與宿主計算機的連通性。
TidIcmpClient控件的主要事件:
OnICMPReply(ASender: TComponent; const AReplyStatus: TReplyStatus):在本地計算機接收到宿主計算機回應時觸發,回收消息放在對象AreplyStatus中。
三、編程實現
下面我們就來制作一個圖形界面的Ping程序。
1、啟動Delphi6.0,打開一個新的標準工程。在窗體中添加所需的控件。
首先向窗體頂端添加一個Panel控件,在其上再依次添加一個Label、Edit和兩個Button控件,并修改Button控件的標題為“Ping”和“Clear”,然后再在Panel下面添加一個ListBox控件,最后再添加一個ICMP控件,并修改其名字屬性為“ICMP”。依次設置其有關的屬性等,修改后的窗體界面如圖1所示。

2、Edit1控件是實現IP地址或者計算機名字的輸入的, Button1則是實現Ping功能的,將其Default屬性設為True,這樣當用戶按下回車鍵時,可以直接實現Ping功能。其主要的代碼段如下:
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
ICMP.Host := Edit1.Text ; //宿主計算機的名稱或IP地址
ICMP.ReceiveTimeout := 1000; //最大等待時間
Button1.Enabled := false;
try
for i:=0 to 3 do //重復4次
begin
ICMP.Ping ;
Application.ProcessMessages ; //延時
end;
finally
Button1.Enabled := true;
end;
end;
3、當本地計算機向宿主計算機發送一個數據包,當本地計算機接收到宿主計算機的信息時,會觸發ICMPReply事件,可以在這個事件中實現對回收信息的顯示或者差錯等。其主要的代碼段如下:
procedure TForm1.ICMPReply(ASender: TComponent;
const AReplyStatus: TReplyStatus);
var
sTime: string;
begin
//檢測Ping的回復錯誤
if (AReplyStatus.MsRoundTripTime = 0 ) then
sTime := '<1'
else
sTime := '=';

//在列表框中顯示Ping消息
ListBox1.Items.Add(Format('ICMP_SEQ=%d Reply from %s [%s] : Bytes=%d time%s%d ms TTL=%d',
[AReplyStatus.SequenceId,
Edit1.Text,
AReplyStatus.FromIpAddress,
AReplyStatus.BytesReceived,
sTime,
AReplyStatus.MsRoundTripTime,
AReplyStatus.TimeToLive]));
end;
4、Button2按鈕是實現對列表框的清除功能的,代碼段如下:
procedure TForm1.Button2Click(Sender: TObject);
begin
ListBox1.Clear ;
end;
編譯上面的程序,一個圖形化的Ping程序就這樣輕輕松松的展現在您的面前了,是不是很酷?實際上我們還可以通過Delphi6提供的Indy控件組,實現其它的網絡程序。自己做一下,你會發現,你在做這些時其實很簡單,因為Delphi6已經為程序員做了許多工作。好了,大家如果有什么問題歡迎發信到romanticonline@hotmail.com,大家共同進步吧。
程序在Windows2000中文版、Delphi6.0下編譯通過。


主站蜘蛛池模板: 天天综合网天天综合色 | 手机看片欧美日韩 | 在线看污视频 | 天天操天天爽天天射 | 日不卡 | 亚洲欧美四级在线播放 | 夜色综合| 亚洲欧美日韩一区成人 | 日本不卡免费高清视频 | 青青青久热国产精品视频 | 亚洲国产日韩在线观频 | 中文字幕在线免费观看 | 午夜人成 | 欧洲性xxxx免费视频下载软件 | 小说区图片区综合久久88 | 四虎在线观看 | 亚洲狼人区 | 亚洲第五页 | 亚洲成片 | 日韩色影院 | 日韩欧美中字 | 日本天堂免费观看 | 日本高清免费不卡在线播放 | 日本高清免费不卡在线播放 | 天天色天天操综合网 | 伊人成人在线 | 日韩黄色在线视频 | 日本精品一区二区 | 欧美午夜成年片在线观看 | 日韩精品欧美国产精品忘忧草 | 色噜噜狠狠色综合网图区 | 午夜免费成人 | 天天射天天干 | 色版网站| 色花堂在线 | 日日爱视频 | 特一级黄 | 日本高清在线观看视频www | 又大又爽又粗免费视频 | 色综合久久久久 | 亚洲国产精品线播放 |