收藏 分享(赏)

第二十四章 C++ Builder 使用Indy元件设计网路程式.ppt

上传人:hwpkd79526 文档编号:8369594 上传时间:2019-06-23 格式:PPT 页数:32 大小:164.50KB
下载 相关 举报
第二十四章 C++ Builder   使用Indy元件设计网路程式.ppt_第1页
第1页 / 共32页
第二十四章 C++ Builder   使用Indy元件设计网路程式.ppt_第2页
第2页 / 共32页
第二十四章 C++ Builder   使用Indy元件设计网路程式.ppt_第3页
第3页 / 共32页
第二十四章 C++ Builder   使用Indy元件设计网路程式.ppt_第4页
第4页 / 共32页
第二十四章 C++ Builder   使用Indy元件设计网路程式.ppt_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、1,第二十四章 使用Indy元件設計網路程式,在上一章我們提到了如何在BCB中開發一些基本的網路程式,在這一章我們要介紹的也是網路程式,不過在這邊我們是使用Indy相關的VCL元件來開發網路程式。在BCB中,Indy所提供的功能比FastNet提供的功能還要強大還要好用。,2,大綱,24-1. 什麼是Indy 24-2. Indy元件有哪些 24-3. HTTP抓網頁程式 24-4. 使用Indy開發的小程式 本章習題,3,24-1. 什麼是Indy,在BCB6還未上市之前,就有很多人認為BCB所提供的FastNet的VCL元件功能不夠強大,所提供的功能也不夠完整,還好那時候在網路上有些免費的

2、VCL元件可以讓大家下載使用,在那個時候,Indy就是最常被使用的一套Free的VCL元件。 Indy提供了很多與網路相關的元件,也提供了一堆編碼解碼的元件,對一般的使用者來說,已經非常的足夠。,4,24-1. 什麼是Indy,Indy Internet Direct Indy是一套完整的網路元件,他不只是免費的,還有OpenSource。 Indy他是利用Delphi開發的,使用blocking socket來當作底層的socket元件,也因為Indy是利用Delphi開發,所以現在不管是在Delphi 6、Kylix 1、以及C+ Builder 6以上的版本(包括)都可以看到Indy的身

3、影。想對Indy有更深入的了解可以到Indy的網站上看看:http:/ Indy元件有哪些,Indy元件在BCB中共分成三個頁次來放置。 Indy Clients、Indy Servers以及Indy Misc這三個分類。 有關Indy的詳細說明可以參考Help的內容!,6,24-3. HTTP抓網頁程式,這一小節我們將要實作一個HTTP抓網頁的軟體,類似的範例我們在介紹FastNet那邊就已經提過了,可是在這邊我們將利用Indy所提供的TIdHTTP來完成這個範例。,7,24-3. HTTP抓網頁程式,範例24-1:HTTP抓網頁程式的實作範例 範例說明 這個範例將和範例23-3幾乎一樣,主

4、要是因為筆者想要呈現使用FastNet以及Indy的差別在那邊。所以在這個範例中,我們也是利用和範例23-3一樣的視窗外觀,一樣的操作方式來實作,唯一的不同就是我們不是使用TNMHTTP這個VCL元件來開發。,8,24-3. HTTP抓網頁程式,範例24-1:主要程式碼(main.cpp),9,24-3. HTTP抓網頁程式,範例24-1:主要程式碼(main.cpp),10,24-3. HTTP抓網頁程式,範例24-1:HTTP抓網頁程式的實作範例 執行結果,11,24-3. HTTP抓網頁程式,範例24-1:HTTP抓網頁程式的實作範例 抓取網頁資料時,使用Get這個Method會傳回網頁

5、的資料,若是要抓取網頁的Header,則必須要執行Head這個Method後,再利用TIdHTTP的Response這個屬性下的一些屬性去抓取所需要的Header資料,也就是TIdHTTP會幫我們將Header先Parse好讓使用者方便去使用。 還有很多TIdHTTP的功能我們還沒有提到,例如SSL的功能以及Request屬性內的設定,都是TIdHTTP所可以提供的功能。 如果我們將SSL的功能啟動的話(將Intercept的值改成SSL),我們將可以使用https的連線方式與遠端溝通 在Request的屬性內,有Accept、AcceptCharSet、AcceptEncoding、Acce

6、ptLanguage、Content-type、ContentVersion、ProxyAuthenticate、ProxyPassword、ProxyServer、UserAgent、WWWAuthenticate等約29項不同的屬性值可以設定。 在一般HTTP Client的設定上,TIdHTTP也可以設定ASCII的Filter、ProtocolVersion、Send或是Recive的Buffer大小,甚至可以去設定Socks的一些資訊等等,這些都是TIdHTTP比TNMHTTP還要來的強大的原因。,12,24-4. 使用Indy開發的小程式,這一小節我們主要是採用多個範例來帶領各位進

7、入Indy程式設計的殿堂,雖然這些範例都很簡單,有些甚至只需要短短的兩三行程式,但希望可以藉著簡單的程式碼,慢慢的學到基本功夫,接下來的真功夫就靠自己去學習了!,13,24-4. 使用Indy開發的小程式,範例24-2:DayTime Client 範例說明 在範例24-2中,我們實作一個DayTime Client,讓這個Application可以去跟遠端的DayTime Server連線,並且抓取DayTime Server上的日期時間。在Client端會將抓到的日期時間顯示出來。在這個範例中,我們主要是利用TIdDayTime這個Indy元件來完成的。,14,24-4. 使用Indy開發

8、的小程式,範例24-2:主要程式碼(main.cpp),15,24-4. 使用Indy開發的小程式,範例24-2:DayTime Client 執行結果,16,24-4. 使用Indy開發的小程式,範例24-3:Echo Client實作 範例說明 在範例24-3,我們主要是利用TIdEcho這個元件來撰寫Echo Client的程式碼,程式的內容也跟上個範例一樣,都非常的簡單!,17,24-4. 使用Indy開發的小程式,範例24-3:主要程式碼(main.cpp),18,24-4. 使用Indy開發的小程式,範例24-3:Echo Client實作 執行結果,19,24-4. 使用Indy

9、開發的小程式,範例24-4:ICMP Client實作 範例說明 我們利用TIdIcmpClient這個元件來實作ICMP Client的程式。 在這個程式中,我們可以透過TIdIcmpClient所提供的元件,知道相當多的訊息,例如Remote IP、Round Trip Time、以及TTL等各式各樣的值,相關的回傳資料可以從ReplyStatus這個屬性找到。,20,24-4. 使用Indy開發的小程式,範例24-4:主要程式碼(main.cpp),21,24-4. 使用Indy開發的小程式,範例24-4:ICMP Client實作 執行結果,22,24-4. 使用Indy開發的小程式,

10、範例24-5:查詢Whois Database的Client程式 範例說明 在範例24-5中,我們將實作一個會跟whois server查詢IP/Domain註冊資料的應用程式。 該程式並不是利用Indy裡面提供的Whois元件,而是直接使用Indy的TIdTCPClient這個元件直接開發,所以在設計上稍微比前面兩三個小程式難一點點點,不過也不是多難的程式,主要的程式碼還是在五行內全部搞定! 在這個範例的程式中有比較特別的就是,我們並沒有直接將所有抓到的資料全部都Print出來,因為那會造成一些排版上的問題,所以我們就利用一段小小的程式碼將我們抓到的資料稍微處理一下,讓這些資料在輸出的時候比

11、較好看。,23,24-4. 使用Indy開發的小程式,範例24-5:主要程式碼(main.cpp),24,24-4. 使用Indy開發的小程式,範例24-5:查詢Whois Database的Client程式 執行結果,25,24-4. 使用Indy開發的小程式,範例24-6:Base64 Encode / Decode 範例說明 在範例24-6中,我們利用Indy Misc中關於Base64 Encode/Decode的元件,實作出這個小應用程式。這個程式主要是將Input的資料利用Base 64 Encode編碼過後,再將編碼過後的資料解碼,看看前後的資料會不會有誤差!Base64 Enc

12、ode / Decode並不一定只可以使用在一般String的Coding上,還可以對檔案或是對Stream處理。,26,24-4. 使用Indy開發的小程式,範例24-6:主要程式碼(main.cpp),27,24-4. 使用Indy開發的小程式,範例24-6:Base64 Encode / Decode 執行結果,28,24-4. 使用Indy開發的小程式,範例24-7:UU Encode 範例說明 在這個範例中,我們說明了該如何使用Indy所提供的UUEncode來讓我們輸入的檔案或是數字或是一般文字都變成UUEncode後的結果。從UUEncode的實作面來看,這個範例跟24-6的程式

13、碼相當的接近,可以互相參考比較!,29,24-4. 使用Indy開發的小程式,範例24-7:主要程式碼(main.cpp),30,24-4. 使用Indy開發的小程式,範例24-7:UU Encode 執行結果,31,24-4. 使用Indy開發的小程式,我們只利用六個小程式來讓各位讀者更悉Indy元件的使用,所以無法將Indy的主要開發精神以及主要的設計概念發揮出來。 如TIdAntiFreeze這個元件,在Indy的整體開發上有很重要的地位。 這章只是學習使用Indy元件的起點,所以後續還有很多Indy元件的應用以及使用,都有待使用者自行發展。,32,本章習題,請利用Indy提供的Client以及Server元件改寫聊天室的程式。 利用Indy元件實作DayTime Server。 利用Indy完成UUDecode以及MD2、MD4、MD5三種不同的Hash function。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报