国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

編程動動手,Ping程序“跟你走”![原創(chuàng)]

2019-11-18 18:41:39
字體:
供稿:網(wǎng)友
 

<BODY>

<P ALIGN="center"><A ><FONT SIZE="4"><B>編程動動手,Ping程序“跟你走”![原創(chuàng)]</B></FONT></A><FONT COLOR="#333333" FACE="宋體"><BR>
---用Delphi打造圖形界面的Ping程序[原創(chuàng)]
<P ALIGN="right">★ 中共河南省濟源市委黨校,耿百強<BR>
<BR>
摘要:本文主要介紹利用Delphi6實現(xiàn)一個圖形界面Ping程序的方法,其中主要討論了ICMP協(xié)議和ICMP協(xié)議控件及其編程方法,并給出了一個實例程序。解決了Ping命令行程序的缺點。<BR>
關鍵詞:Delphi,ICMP協(xié)議,Ping程序</P>
<P>一、 前言<BR>
在日常網(wǎng)絡管理時,我們常用Ping命令來測試是否能與宿主(或路由)連通。但它一般是以命令行的形式提供給我們,不僅使用不方便,而且命令執(zhí)行速度較快時,常常使我們看不清執(zhí)行結果。那么,有沒有辦法來解決這個矛盾呢?答案當然是肯定的。下面,我們將利用Delphi強大的網(wǎng)絡編程功能來實現(xiàn)一個圖形化的Ping程序,程序的運行界面如圖1所示。<BR>
 <BR>
<IMG BORDER="0" SRC="http://www.jyzx.com/bbs/pic/jpg.gif" WIDTH="16" HEIGHT="16">此主題相關圖片如下:<BR>
<A TARGET="_blank"><IMG ALT="按此在新窗口瀏覽圖片" BORDER="0" ONLOAD="javascr程序的主要功能:在Address后的編輯框中可以輸入一個計算機的名稱或者IP地址,然后按Ping按鈕或直接按回車可以測試與宿主計算機的連通性,如果連能正常,則在下面的列表框中顯示宿主計算機的IP地址等信息。可以通過Clear功能按鈕實現(xiàn)對列表框信息的清除。<BR>
二、 編程原理<BR>
ICMP(Internet Control Messages
PRotocol)是Internet信報控制協(xié)議的簡寫,它將報文放在一個IP數(shù)據(jù)報的數(shù)據(jù)部分中通過網(wǎng)絡傳送,該協(xié)議允許路由器向其它的路由器或者主機發(fā)送并且回收差錯與控制報文,它為發(fā)生差錯的路由器提供了向源端報告差錯的功能。連通性測試程序Ping正是利用了ICMP協(xié)議的這種特性,通過向目的端(宿主)發(fā)送并且回收信報來測試端到端的連通性。<BR>
Delphi6.0新增了Indy網(wǎng)絡控件組,包括了幾乎所有的網(wǎng)絡協(xié)議控件,比如SMTP、POP3、SNMP及ICMP等,避免了程序員直接與WinSocket打交道,大大方便了我們編寫網(wǎng)絡程序。Indy控件組分為Server和Clent兩部分,以適應我們編寫不同的服務器/工作站程序。我們可以很方便的在Indy Clent中找到ICMP協(xié)議控件TidIcmpClient。<BR>
TidIcmpClient控件的常用屬性如下:<BR>
HOST:宿主計算機的IP地址,可以是計算機的名字或者IP地址;<BR>
Port:表示接收報文的本地系統(tǒng)的端口號;<BR>
ReceiveTimeout:表示連接等待宿主計算機回應的最大時間,單位是毫秒。<BR>
TidIcmpClient控件的主要方法:<BR>
Ping():檢測本地計算機與宿主計算機的連通性。<BR>
TidIcmpClient控件的主要事件:<BR>
OnICMPReply(ASender: TComponent; const AReplyStatus: TReplyStatus):在本地計算機接收到宿主計算機回應時觸發(fā),回收消息放在對象AreplyStatus中。<BR>
三、編程實現(xiàn)<BR>
下面我們就來制作一個圖形界面的Ping程序。<BR>
1、啟動Delphi6.0,打開一個新的標準工程。在窗體中添加所需的控件。<BR>
首先向窗體頂端添加一個Panel控件,在其上再依次添加一個Label、Edit和兩個Button控件,并修改Button控件的標題為“Ping”和“Clear”,然后再在Panel下面添加一個ListBox控件,最后再添加一個ICMP控件,并修改其名字屬性為“ICMP”。依次設置其有關的屬性等,修改后的窗體界面如圖2所示。<BR>
<BR>
<IMG BORDER="0" SRC="http://www.jyzx.com/bbs/pic/jpg.gif" WIDTH="16" HEIGHT="16">此主題相關圖片如下:<BR>
<A TARGET="_blank"><IMG ALT="按此在新窗口瀏覽圖片" BORDER="0" ONLOAD="Javascript:if(this.width>screen.width-333)this.width=screen.width-333" SRC="http://www.jyzx.com/bbs/uploadImages/20023813315035522.jpg" WIDTH="442" HEIGHT="293"></A><BR>
 <BR>
2、Edit1控件是實現(xiàn)IP地址或者計算機名字的輸入的, Button1則是實現(xiàn)Ping功能的,將其Default屬性設為True,這樣當用戶按下回車鍵時,可以直接實現(xiàn)Ping功能。其主要的代碼段如下:<BR>
procedure TForm1.Button1Click(Sender: TObject);<BR>
var<BR>
  i : integer;<BR>
begin<BR>
   ICMP.Host := Edit1.Text ;   file://宿主計算機的名稱或IP地址<BR>
   ICMP.ReceiveTimeout := 1000;  file://最大等待時間<BR>
   Button1.Enabled := false;<BR>
   try<BR>
      for i:=0 to 3 do    file://重復4次<BR>
      begin<BR>
         ICMP.Ping ;<BR>
         application.ProcessMessages ;  file://延時<BR>
      end;<BR>
   finally<BR>
      Button1.Enabled := true;<BR>
   end;<BR>
end;<BR>
3、當本地計算機向宿主計算機發(fā)送一個數(shù)據(jù)包,當本地計算機接收到宿主計算機的信息時,會觸發(fā)ICMPReply事件,可以在這個事件中實現(xiàn)對回收信息的顯示或者差錯等。其主要的代碼段如下:<BR>
<P>procedure TForm1.ICMPReply(ASender: TComponent;<BR>
  const AReplyStatus: TReplyStatus);<BR>
var<BR>
  sTime: string;<BR>
begin<BR>
  file://檢測Ping的回復錯誤<BR>
  if (AReplyStatus.MsRoundTripTime = 0 ) then<BR>
     sTime := '<1'<BR>
  else<BR>
     sTime := '=';</P>
<P>  file://在列表框中顯示Ping消息<BR>
  ListBox1.Items.Add(Format('ICMP_SEQ=%d Reply from %s [%s] : Bytes=%d time%s%d ms TTL=%d',<BR>
  [AReplyStatus.SequenceId,<BR>
  Edit1.Text,<BR>
  AReplyStatus.FromIpAddress,<BR>
  AReplyStatus.BytesReceived,<BR>
  sTime,<BR>
  AReplyStatus.MsRoundTripTime,<BR>
  AReplyStatus.TimeToLive]));<BR>
end;<BR>
</P>
4、Button2按鈕是實現(xiàn)對列表框的清除功能的,代碼段如下:<BR>
procedure TForm1.Button2Click(Sender: TObject);<BR>
begin<BR>
  ListBox1.Clear ;<BR>
end;<BR>
編譯上面的程序,一個圖形化的Ping程序就這樣輕輕松松的展現(xiàn)在您的面前了,是不是很酷?實際上我們還可以通過Delphi6提供的Indy控件組,實現(xiàn)其它的網(wǎng)絡程序。自己做一下,你會發(fā)現(xiàn),你在做這些時其實很簡單,因為Delphi6已經(jīng)為程序員做了許多工作。好了,大家如果有什么問題歡迎發(fā)信到romanticonline@hotmail.com,大家共同進步吧。<BR>
程序在Windows2000中文版、Delphi6.0下編譯通過。</P>
<P><SPAN CLASS="TEXTFONT">作者:耿百強<BR>
地址:中共河南省濟源市委黨校<BR>
郵政編碼:454650<BR>
聯(lián)系電話:0391-6666267<BR>
E-Mail:dxgbq@sohu.com<BR>
OICQ:10562208<BR>
寫稿日期:2002-3-12<BR>
</SPAN></P>
<P><BR>
</P>
</FONT>

</BODY>


上一篇:發(fā)布程序時對ODBC數(shù)據(jù)源的配置方法

下一篇:如何把數(shù)據(jù)庫的內(nèi)容寫入到Word文檔中?

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網(wǎng)友關注

主站蜘蛛池模板: 和政县| 岑溪市| 图木舒克市| 武夷山市| 保康县| 波密县| 宜川县| 龙泉市| 乌拉特后旗| 台北市| 大洼县| 文登市| 洪江市| 绥阳县| 小金县| 商城县| 界首市| 扶风县| 兴国县| 左权县| 麦盖提县| 延津县| 芒康县| 天镇县| 常宁市| 桐乡市| 恩平市| 定结县| 祥云县| 铜川市| 老河口市| 周宁县| 新营市| 大厂| 通城县| 济南市| 鹤峰县| 蕲春县| 石渠县| 兖州市| 酒泉市|