嵌入式FTP客戶端的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
嵌入式FTP客戶端的設(shè)計(jì)與實(shí)現(xiàn)_第2頁
嵌入式FTP客戶端的設(shè)計(jì)與實(shí)現(xiàn)_第3頁
嵌入式FTP客戶端的設(shè)計(jì)與實(shí)現(xiàn)_第4頁
嵌入式FTP客戶端的設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、嵌入式FTP客戶端的設(shè)計(jì)與實(shí)現(xiàn)摘 要FTP即文件傳輸協(xié)議,它是目前Internet上使用的最廣泛的文件傳送協(xié)議。FTP是TCP/IP網(wǎng)絡(luò)和Internet上最早使用的協(xié)議之一。用戶可以通過自己的PC機(jī)與所有運(yùn)行FTP協(xié)議的服務(wù)器相連,訪問服務(wù)器上的信息。FTP客戶端可以給服務(wù)器發(fā)出命令來下載文件,上傳文件,創(chuàng)建或改變服務(wù)器上的目錄等功能。隨著嵌入式系統(tǒng)的廣泛應(yīng)用,嵌入式系統(tǒng)對(duì)圖形用戶界面的需求也越來越重要, Qt是一個(gè)跨平臺(tái)的C+圖形用戶界面應(yīng)用程序框架,可以在眾多嵌入式場合發(fā)揮很好的作用。本課題是基于Qt來設(shè)計(jì)的FTP客戶端,該客戶端實(shí)現(xiàn)了給出Ip地址進(jìn)行FTP登錄,并能查看服務(wù)端的文件信息

2、列表,從而對(duì)指定文件的上傳和下載功能,具有一定的實(shí)用性和方便性。關(guān)鍵詞:FTP;跨平臺(tái);Qt;上傳;下載 The Design And Implementation Of Embedded FTP ClientAbstractFile Transfer Protocol,which is the most widely used protocol for transmission at present.FTP is one of the earliest protocol used in TCP/IP network and Internet.Clients can link other FT

3、P servers in the word by their computers and visit large amount of informations. FTP client can issue commands to the server to download files,upload files, create or change directories on the server.Along with the embedded system, the graphical user interface is more and more important. Qt is a cro

4、ss platform C+ graphical user interface application framework, can play a good role in many embedded applications. This system is to design a FTP client based on Qt, this client to achieve produces the computer Ip address for Ftp login, check server-side file information list, and realize to the spe

5、cified file download, has a certain practicality and convenience. Keywords: FTP protocol;cross-platform;Qt;File Upload; File Dowload目 錄 TOC o 1-3 h z u HYPERLINK l _Toc6328 摘 要 PAGEREF _Toc6328 i HYPERLINK l _Toc30063 Abstract PAGEREF _Toc30063 ii HYPERLINK l _Toc22424 1 選題的目的和意義 PAGEREF _Toc22424 1

6、 HYPERLINK l _Toc21473 1.1 選題背景 PAGEREF _Toc21473 1 HYPERLINK l _Toc5038 1.2 目的和意義 PAGEREF _Toc5038 1 HYPERLINK l _Toc8061 1.3 當(dāng)前發(fā)展 PAGEREF _Toc8061 2 HYPERLINK l _Toc7902 1.4 所做工作 PAGEREF _Toc7902 2 HYPERLINK l _Toc27396 2 相關(guān)基礎(chǔ)技術(shù)與開發(fā)平臺(tái) PAGEREF _Toc27396 3 HYPERLINK l _Toc20391 2.1 QT開發(fā)工具簡介 PAGEREF _

7、Toc20391 3 HYPERLINK l _Toc3761 2.1.1 Qt的主要特性 PAGEREF _Toc3761 3 HYPERLINK l _Toc29225 2.1.2 Qt編程機(jī)制簡介 PAGEREF _Toc29225 3 HYPERLINK l _Toc28587 2.1.3 Qt的優(yōu)勢 PAGEREF _Toc28587 5 HYPERLINK l _Toc8785 2.1.4 Qt creator介紹 PAGEREF _Toc8785 6 HYPERLINK l _Toc24586 2.1.5 Qt所支持的平臺(tái) PAGEREF _Toc24586 6 HYPERLIN

8、K l _Toc24652 2.1.6 Qt類庫 PAGEREF _Toc24652 8 HYPERLINK l _Toc17392 2.2 FTP通信協(xié)議 PAGEREF _Toc17392 10 HYPERLINK l _Toc31156 2.2.1 FTP基本簡介 PAGEREF _Toc31156 10 HYPERLINK l _Toc19593 2.2.2 FTP工作原理 PAGEREF _Toc19593 10 HYPERLINK l _Toc29977 2.2.3 FTP的作用 PAGEREF _Toc29977 11 HYPERLINK l _Toc24558 2.2.4 FT

9、P的使用 PAGEREF _Toc24558 11 HYPERLINK l _Toc23246 2.2.5 FTP的缺點(diǎn) PAGEREF _Toc23246 12 HYPERLINK l _Toc15681 3 需求分析 PAGEREF _Toc15681 13 HYPERLINK l _Toc19748 3.1 設(shè)計(jì)目的 PAGEREF _Toc19748 13 HYPERLINK l _Toc9847 3.2 完成目標(biāo) PAGEREF _Toc9847 13 HYPERLINK l _Toc13178 3.3 功能需求 PAGEREF _Toc13178 13 HYPERLINK l _T

10、oc26030 3.3.1 用戶需求分析 PAGEREF _Toc26030 13 HYPERLINK l _Toc5834 3.3.2 功能需求分析 PAGEREF _Toc5834 13 HYPERLINK l _Toc29189 3.3.3 性能需求 PAGEREF _Toc29189 14 HYPERLINK l _Toc919 3.4 環(huán)境需求 PAGEREF _Toc919 14 HYPERLINK l _Toc22599 3.5 界面設(shè)計(jì)需求 PAGEREF _Toc22599 14 HYPERLINK l _Toc9329 4 軟件總體分析與設(shè)計(jì) PAGEREF _Toc932

11、9 15 HYPERLINK l _Toc28146 4.1 系統(tǒng)模塊設(shè)計(jì) PAGEREF _Toc28146 15 HYPERLINK l _Toc8549 4.2 詳細(xì)設(shè)計(jì) PAGEREF _Toc8549 16 HYPERLINK l _Toc18774 4.2.1 客戶端連接流程圖 PAGEREF _Toc18774 16 HYPERLINK l _Toc29712 4.2.2 上傳子模塊流程圖 PAGEREF _Toc29712 17 HYPERLINK l _Toc4075 4.2.3 下載子模塊流程圖 PAGEREF _Toc4075 18 HYPERLINK l _Toc747

12、4 4.3 系統(tǒng)設(shè)計(jì)與程序的實(shí)現(xiàn) PAGEREF _Toc7474 19 HYPERLINK l _Toc29704 4.3.1 界面實(shí)現(xiàn)部分 PAGEREF _Toc29704 19 HYPERLINK l _Toc20467 4.3.2 模塊功能的實(shí)現(xiàn) PAGEREF _Toc20467 20 HYPERLINK l _Toc17826 5 系統(tǒng)運(yùn)行及測試 PAGEREF _Toc17826 26 HYPERLINK l _Toc2103 5.1 環(huán)境的搭建 PAGEREF _Toc2103 26 HYPERLINK l _Toc21952 5.1.1 安裝Qt Creator和Qt 框架

13、 PAGEREF _Toc21952 26 HYPERLINK l _Toc27832 5.1.2 修改系統(tǒng)的環(huán)境變量 PAGEREF _Toc27832 27 HYPERLINK l _Toc10947 5.1.3 成功安裝后的Qt界面 PAGEREF _Toc10947 28 HYPERLINK l _Toc8893 5.2 系統(tǒng)運(yùn)行 PAGEREF _Toc8893 28 HYPERLINK l _Toc13233 5.2.1運(yùn)行前分析 PAGEREF _Toc13233 28 HYPERLINK l _Toc10398 5.2.2主要功能運(yùn)行 PAGEREF _Toc10398 29

14、HYPERLINK l _Toc23338 5.2.3 其他功能 PAGEREF _Toc23338 32 HYPERLINK l _Toc13700 5.3 系統(tǒng)測試 PAGEREF _Toc13700 34 HYPERLINK l _Toc7852 5.3.1 QT Creator調(diào)試器 PAGEREF _Toc7852 34 HYPERLINK l _Toc20479 5.3.2 QT調(diào)試方法 PAGEREF _Toc20479 34 HYPERLINK l _Toc13651 5.3.3 出現(xiàn)的錯(cuò)誤及解決方案 PAGEREF _Toc13651 35 HYPERLINK l _Toc6

15、756 5.4 小結(jié) PAGEREF _Toc6756 35 HYPERLINK l _Toc26934 總結(jié) PAGEREF _Toc26934 36 HYPERLINK l _Toc2842 參考文獻(xiàn) PAGEREF _Toc2842 38 HYPERLINK l _Toc8465 致 謝 PAGEREF _Toc8465 39 HYPERLINK l _Toc14389 外文原文 PAGEREF _Toc14389 40 HYPERLINK l _Toc17374 中文翻譯 PAGEREF _Toc17374 55選題的目的和意義 選題背景現(xiàn)如今人類已經(jīng)進(jìn)入了21世紀(jì),科學(xué)技術(shù)的突飛猛進(jìn)

16、的發(fā)展,知識(shí)經(jīng)濟(jì)的初見端倪,和Internet技術(shù)的迅猛發(fā)展與普及,推動(dòng)了整個(gè)世界范圍的信息的傳輸和信息的交流。FTP協(xié)議是Internet上最早的應(yīng)用也是最廣泛的應(yīng)用,直到目前為止它仍然是最重要的同時(shí)也是最基本的應(yīng)用之一,在互聯(lián)網(wǎng)剛開始發(fā)展的時(shí)候曾經(jīng)占據(jù)整個(gè)互聯(lián)網(wǎng)通信量的三分之一。FTP主要解決了在不同操作系統(tǒng)下處理文件格式的不兼容的問題,如果用戶想使用其他計(jì)算機(jī)上的文件,最理想的辦法就是把它復(fù)制到自己的計(jì)算機(jī)當(dāng)中,方便在自己的計(jì)算機(jī)中使用。FTP客戶端正是完成這項(xiàng)工作的工具,成千上百萬的數(shù)據(jù)、資料分布在世界各地,有了FTP客戶端之后,只要輕點(diǎn)幾下鼠標(biāo),就可以輕而易舉的獲得你想要的任何資料。

17、在眾多的網(wǎng)絡(luò)應(yīng)用中,F(xiàn)TP有著非常重要的地位,在Internet中一個(gè)十分重要的就是資源,而各種各樣的資源大多數(shù)都是放在FTP服務(wù)器中的,為了獲得這些資源,我們必須使用FTP客戶端軟件。本畢業(yè)設(shè)計(jì)將介紹FTP客戶端系統(tǒng)的設(shè)計(jì)和開發(fā)工作,因此,文章涵蓋以下三方面的內(nèi)容:1.基礎(chǔ)技術(shù)的介紹;2.文件傳輸系統(tǒng)的詳細(xì)需求;3.介紹系統(tǒng)的具體實(shí)現(xiàn);4.對(duì)最終系統(tǒng)進(jìn)行運(yùn)行測試。通過這次課題,對(duì)整個(gè)開發(fā)過程有深入的了解,提高實(shí)踐能力。FTP將在未來的很長時(shí)間里作為主要的文件傳輸協(xié)議,使用前景仍然寬廣,功能會(huì)更加強(qiáng)大。 目的和意義 FTP協(xié)議是TCP/IP網(wǎng)絡(luò)上兩臺(tái)計(jì)算機(jī)傳送文件的協(xié)議,F(xiàn)TP是在TCP/IP

18、網(wǎng)絡(luò)和INTERNET上最早使用的協(xié)議之一。盡管World Wide Web(WWW)已經(jīng)替代了FTP的大多數(shù)功能,F(xiàn)TP仍然是通過Internet把文件從客戶端復(fù)制到服務(wù)器上的一種很實(shí)用的途徑。FTP客戶機(jī)可以給服務(wù)器發(fā)出相應(yīng)的命令來下載文件,上傳文件,創(chuàng)建或改變服務(wù)器上的目錄。原來的FTP軟件大多是使用的命令行操作,但是后來有了像CUTEFTP這樣的圖形界面軟件,使得FTP傳輸變得非常方便易學(xué)。主要使用它進(jìn)行“上載”。即向服務(wù)器傳輸文件。由于FTP協(xié)議的傳輸速度比較快,我們?cè)谥谱髦T如“軟件下載”這類網(wǎng)站時(shí)喜歡用FTP來實(shí)現(xiàn),同時(shí)我們這種服務(wù)面向大眾,不需要身份認(rèn)證,即“匿名FTP服務(wù)器”。

19、FTP是應(yīng)用層的協(xié)議,它基于傳輸層,為用戶服務(wù),它們負(fù)責(zé)進(jìn)行文件的傳輸。FTP是一個(gè)8位的客戶端-服務(wù)器協(xié)議,能操作任何類型的文件而不需要進(jìn)一步處理,就像MIME或Unicode一樣。但是,F(xiàn)TP有著極高的延時(shí),這意味著,從開始請(qǐng)求到第一次接收需求數(shù)據(jù)之間的時(shí)間會(huì)非常長,并且不時(shí)的必需執(zhí)行一些冗長的登錄進(jìn)程。選擇此課題作為畢業(yè)設(shè)計(jì),是希望將學(xué)習(xí)累計(jì)的知識(shí)用于實(shí)踐,開發(fā)出該系統(tǒng)的各項(xiàng)功能,使用戶很簡單的就能登錄FTP服務(wù)器、上傳下載數(shù)據(jù)等功能的需求。與此同時(shí),在開發(fā)中學(xué)會(huì)發(fā)現(xiàn)解決問題,提高軟件開發(fā)能力,為今后的工作、學(xué)習(xí)、項(xiàng)目開發(fā)累計(jì)實(shí)踐經(jīng)驗(yàn)。所以選擇了使用Qt來開發(fā)實(shí)現(xiàn)文件傳輸功能的FTP客戶

20、端。 當(dāng)前發(fā)展目前為止已經(jīng)有許多互聯(lián)網(wǎng)站點(diǎn)已經(jīng)建立了可供所有人都能訪問的資料庫,并且這些資料都可以被通過使用FTP來獲取。匿名的FTP使得用戶有機(jī)會(huì)存取到世界上最大的信息庫,這個(gè)信息庫都是慢慢日積月累起來的,并且還在有不斷的增長的趨勢,永遠(yuǎn)都不會(huì)關(guān)閉,涉及面也很廣,幾乎涉及到所有的主題。而且,這一切都是免費(fèi)的提供每個(gè)人下載和使用的。Internet之所以能延續(xù)到今天,是因?yàn)槿藗兪褂猛ㄟ^標(biāo)準(zhǔn)協(xié)議提供標(biāo)準(zhǔn)服務(wù)的程序。由于FTP提供的文件傳輸是將一個(gè)完整的文件從一個(gè)系統(tǒng)復(fù)制到另一個(gè)系統(tǒng)中。要使用FTP,就需要有登陸服務(wù)器的注冊(cè)賬號(hào),或者匿名FTP的服務(wù)器來使用。與Telnet類似,F(xiàn)TP最早的設(shè)計(jì)用

21、于兩臺(tái)不同的主機(jī),這兩個(gè)主機(jī)可能運(yùn)行在不同的操作系統(tǒng)下、使用不同的文件結(jié)構(gòu)、并可能使用不同的字符集。但不同的是,Telnet獲得異構(gòu)型是強(qiáng)制兩端都采用同一標(biāo)準(zhǔn):使用7比特ASCII碼的NVT。而FTP是采用另一種方法來處理不同系統(tǒng)間的差異:FTP 支持有限數(shù)量的文件類型如ASCII文件,二進(jìn)制文件等等和文件結(jié)構(gòu)(面向字節(jié)流或記錄)。 所做工作目前在國內(nèi)外基于FTP的網(wǎng)絡(luò)通信仍然是Internet上文件傳輸?shù)耐ㄓ玫姆椒ǎ腿缤?dāng)初FTP剛出現(xiàn)的時(shí)候,F(xiàn)TP并沒有發(fā)生多大的變化,但是在Internet迅猛的發(fā)展的形勢下,其安全問題還是日益突出出來。但是FTP還是非常的流行,大部分的網(wǎng)站以及論壇等等

22、涉及到用戶下載的網(wǎng)站都提供了FTP服務(wù),特別是校園中也可以利用FTP服務(wù)器來使身處校園中的每個(gè)人都可以通過FTP來下載或共享文件,這使得每個(gè)人都能享受到網(wǎng)絡(luò)的便捷。在現(xiàn)如今網(wǎng)絡(luò)上有許多的FTP客戶端類的軟件,但是其中大部分都是由于其界面復(fù)雜,操作繁瑣,不被大多數(shù)用戶接受,為了更好的利用網(wǎng)絡(luò)資源,為了方便用戶使用FTP,我設(shè)計(jì)了一個(gè)非常簡單容易使用用的FTP 客戶端。相關(guān)基礎(chǔ)技術(shù)與開發(fā)平臺(tái) QT開發(fā)工具簡介Qt的主要特性Qt是一個(gè)跨平臺(tái)的C+圖形用戶界面庫,是由挪威TrollTech公司開發(fā),目前包括Qt/X11、基于Framebuffer的Qt/Embedded、快速開發(fā)工具Qt Design

23、er以及國際化工具Qt Linguist等。人們所熟知的Linux下面的KDE環(huán)境就是基于Qt開發(fā)而成的。Qt支持Unix和Linux系統(tǒng)以及Windows系統(tǒng)。Qt的主要特點(diǎn)有: 面向?qū)ο螅?很容易擴(kuò)展, 并且允許真正的組件編程; Qt對(duì)各個(gè)模塊進(jìn)行了良好的封裝,使各模塊可重用性較好;優(yōu)良的跨平臺(tái)特性,使用Qt類編寫的程序可以實(shí)現(xiàn) “一次編碼,到處編譯”,極大的降低了跨平臺(tái)開發(fā)的難度;構(gòu)件支持,對(duì)于對(duì)象間通信,Qt沒有采用函數(shù)回調(diào)的方法,而是采用了一種全新并且可選的被稱為“信號(hào)與槽” 的對(duì)象間通信機(jī)制,通過一個(gè)對(duì)象信號(hào)的發(fā)射,另一個(gè)槽函數(shù)的響應(yīng),使各個(gè)對(duì)象之間的通信安全而且高效。 Qt的這些

24、特點(diǎn)使它非常適合于真正的構(gòu)件編程, 同時(shí)使各個(gè)組件之間的協(xié)同工作變得十分簡單,并且 Qt是直接基于 Xlib的,不依賴 Motif 工具包, 所以它的執(zhí)行效率比一般的基于平臺(tái)的代碼的執(zhí)行效率要高。Qt類庫是一個(gè)擁有超過400個(gè)的C+類,同時(shí)不斷擴(kuò)展的庫。它封裝了用于端到端應(yīng)用程序開發(fā)所需要的所有基礎(chǔ)結(jié)構(gòu)。優(yōu)秀的Qt應(yīng)用程序接口包括成熟的對(duì)象模型,內(nèi)容豐富的集合類,圖形用戶界面編程與布局設(shè)計(jì)功能,數(shù)據(jù)庫編程,網(wǎng)絡(luò),XML,國際化,OpenGL集成等。Qt設(shè)計(jì)者是一個(gè)功能強(qiáng)大的GUI布局與窗體構(gòu)造器,能夠在所有支持平臺(tái)上,以本地化的視圖外觀與認(rèn)知,快速開發(fā)高性能的用戶界面。Qt語言家是一套用來消除

25、國際化工作流程所帶來障礙的工具。使用Qt語言家,開發(fā)小組可把應(yīng)用程序的翻譯轉(zhuǎn)換外包給非技術(shù)性翻譯人員,從而可增加精確度,大大加快本地化處理過程。Qt助手是一個(gè)完全可自定義,重新分配的幫助文件或文檔瀏覽器,它可與基于Qt的應(yīng)用程序運(yùn)行。使用Qt助手,開發(fā)小組同樣能夠很大程度上加快文檔的處理過程。Qt編程機(jī)制簡介信號(hào)/槽機(jī)制是Qt的一個(gè)最重要的特征并且也許是Qt與其它工具包的最不相同的部分。在圖形用戶界面編程中,我們經(jīng)常希望一個(gè)窗口部件的一個(gè)變化被通知給另一個(gè)窗口部件。更一般地,我們希望任何一類的對(duì)象可以和其它對(duì)象進(jìn)行通訊。較老的工具包使用一種被稱作回調(diào)的通訊方式來實(shí)現(xiàn)同一目的?;卣{(diào)是指一個(gè)函數(shù)的

26、指針,所以如果你希望一個(gè)處理函數(shù)通知你一些事件,你可以把另一個(gè)函數(shù)(回調(diào))的指針傳遞給處理函數(shù)。處理函數(shù)在適當(dāng)?shù)臅r(shí)候調(diào)用回調(diào)。回調(diào)有兩個(gè)主要缺點(diǎn)。首先他們不是類型安全的。我們從來都不能確定處理函數(shù)使用了正確的參數(shù)來調(diào)用回調(diào)。因此容易造成進(jìn)程崩潰,另外一個(gè)問題是,回調(diào)這種方式緊緊的綁定了圖形用戶接口的功能元素,因而很難把開發(fā)進(jìn)行獨(dú)立的分類。Qt的信號(hào)與槽機(jī)制是不同的。Qt的信號(hào)與槽均以函數(shù)形式出現(xiàn),Qt的窗口部件有很多預(yù)定義的信號(hào),但我們也可以通過繼承來加入我們自己的信號(hào)。槽就是一個(gè)可以被調(diào)用處理特定信號(hào)的函數(shù)。Qt的窗口部件有很多預(yù)定義的槽,但是通常的習(xí)慣是你可以加入自己的槽,這樣你就可以處理

27、你所感興趣的信號(hào)。我們可以用connect()函數(shù)對(duì)需要的信號(hào)和槽進(jìn)行連接。當(dāng)對(duì)象的內(nèi)部狀態(tài)發(fā)生改變,信號(hào)就被發(fā)射。從某種意義上講,它們也許對(duì)外面的世界感興趣。這就是所有的對(duì)象通訊時(shí)所做的一切。它不知道也不注意無論有沒有東西接收它所發(fā)射的信號(hào)。當(dāng)一個(gè)信號(hào)被發(fā)射,它所連接的槽會(huì)被立即執(zhí)行,就像一個(gè)普通函數(shù)調(diào)用一樣(見圖2-1)。信號(hào)/槽機(jī)制完全不依賴于任何一種圖形用戶界面的事件回路。當(dāng)所有的槽都返回后發(fā)射的信號(hào)也將返回。信號(hào)與插槽機(jī)制并不要求類之間互相知道細(xì)節(jié),這樣就可以相對(duì)容易的開發(fā)出代碼可高重用的類(Matthias Dalheimer,2002)。信號(hào)和槽的機(jī)制是類型安全的:一個(gè)信號(hào)的簽名

28、必須與它的接收槽的簽名相匹配。(實(shí)際上一個(gè)槽的簽名可以比它接收的信號(hào)的簽名少,因?yàn)樗梢院雎灶~外的簽名。)因?yàn)楹灻且恢碌模幾g器就可以幫助我們檢測類型不匹配。它以警告的方式報(bào)告類型錯(cuò)誤,而不會(huì)使系統(tǒng)產(chǎn)生崩潰。信號(hào)和槽是寬松地聯(lián)系在一起的:一個(gè)發(fā)射信號(hào)的類不用知道也不用注意哪個(gè)槽要接收這個(gè)信號(hào)(Johan Thelin,2007)。Qt的信號(hào)和槽的機(jī)制可以保證如果你把一個(gè)信號(hào)和一個(gè)槽連接起來,槽會(huì)在正確的時(shí)間使用信號(hào)的參數(shù)而被調(diào)用。信號(hào)和槽可以使用任何數(shù)量、任何類型的參數(shù)。它們是完全類型安全的:不會(huì)再有回調(diào)核心轉(zhuǎn)儲(chǔ)(core dump)。你可以把許多信號(hào)和你所希望的單一槽相連,并且一個(gè)信號(hào)也可

29、以和你所期望的許多槽相連。把一個(gè)信號(hào)和另一個(gè)信號(hào)直接相連也是可以的。(這時(shí),只要第一個(gè)信號(hào)被發(fā)射時(shí),第二個(gè)信號(hào)立刻就被發(fā)射。)總體來看,信號(hào)和槽構(gòu)成了一個(gè)強(qiáng)有力的組件編程機(jī)制。如果一個(gè)類要使用信號(hào)與槽機(jī)制,它就必須是從QObject或QObject的子類繼承,而且類的定義必須加上Q_OBJECT宏。signals、slots和emit是Qt特有的關(guān)鍵字,分別用來表示信號(hào)、槽、和發(fā)送信號(hào),移除這些關(guān)鍵字和預(yù)處理程序,就可以使用標(biāo)準(zhǔn)的C+編譯器。槽同其他函數(shù)一樣也具有訪問權(quán)限,只是槽的訪問權(quán)限決定了誰可以和它相連,如一個(gè)public slots:包含了任何信號(hào)都可以相連的槽(Andrew Krau

30、se,2007) 。一個(gè)protected slots:包含了只有這個(gè)類和它的子類的信號(hào)才能連接的槽。這就是說這些槽只是類的實(shí)現(xiàn)的一部分,而不是它和外界的接口。 一個(gè)private slots:包含了只有這個(gè)類本身的信號(hào)可以連接的槽,甚至它的子類都沒有獲得連接的權(quán)利。 對(duì)象 1信號(hào) 1信號(hào) 2 connect(對(duì)象1,信號(hào)1,對(duì)象2,插槽1) connect(對(duì)象1,信號(hào)1,對(duì)象2,插槽2)對(duì)象 2信號(hào) 1插槽 1插槽 2 對(duì)象 3信號(hào) 1插槽 1對(duì)象 4插槽 1插槽 2插槽 3connect(對(duì)象1,信號(hào)2,對(duì)象4,插槽1)connect(對(duì)象3,信號(hào)1,對(duì)象4,插槽3)圖2-1 信號(hào)和槽的

31、連接原理圖Qt的優(yōu)勢作為嵌入式圖形界面的開發(fā)工具,Qt的優(yōu)勢有很多,具體的優(yōu)勢列舉如以下幾點(diǎn):1.支持平臺(tái)廣泛Qt應(yīng)用程序接口與工具兼容于所有支持平臺(tái),讓開發(fā)人員掌握一個(gè)應(yīng)用程序接口,便可執(zhí)行與平臺(tái)非相關(guān)的應(yīng)用開發(fā)與配置,其支持的平臺(tái)有:QT/Windows、QT/Mac(Mac OS X)、QT/X11(Linux,SolarisHP-UX,IRIX,AIX)等。2.封裝多Qt對(duì)不同平臺(tái)的專門QPI進(jìn)行了專門的封裝(文件處理、網(wǎng)絡(luò)等)。3.面向?qū)ο驫t具有模塊設(shè)計(jì)和注重軟件構(gòu)件或元素的可重用性的特點(diǎn)。4.構(gòu)建支持Qt提供信號(hào)和槽概念,這是一種類型安全的方法,它允許回調(diào),并支持對(duì)象之間在互相不

32、知道對(duì)方信息的情況下進(jìn)行合作,這使得Qt非常適合于真正的構(gòu)建編程。5.友好的聯(lián)機(jī)幫助Qt提供了大量的聯(lián)機(jī)參考文檔,有超文本HTML方式,也有Unix幫助手冊(cè)和補(bǔ)充說明,并且對(duì)于初學(xué)者,其中的指南將一步步介紹如何進(jìn)行Qt編程。6.便利性由于Qt是一種跨平臺(tái)的GUI工具包,它對(duì)編程者隱藏了在處理不同窗口系統(tǒng)時(shí)潛在的問題,Qt定義了一些類來隱藏在不同操作系統(tǒng)上不同處理方式下的細(xì)節(jié)問題。7.用戶自定義使用其他的一些工具包經(jīng)常會(huì)遇到這樣的一種情況,沒有真正的適合需求的組件,聲稱自定義的組件對(duì)用戶來說就像是一個(gè)黑匣子。而在Qt中生成用戶自定義的組件非常簡單,而且易于修改組建的行為。8.國際化Qt為本地化應(yīng)

33、用提供了完全的支持,所有用戶界面文本都可以基于消息翻譯表被翻譯成各國語言,Qt還支持雙字節(jié)16bit國際字符標(biāo)準(zhǔn)。9.豐富的API函數(shù)Qt為專業(yè)應(yīng)用提供了大量的函數(shù),在Qt的API中含有大約250個(gè)C+類,大多數(shù)的類都是GUI專有的。10.可用戶化外觀Qt支持主題,基于Qt的應(yīng)用程序能夠在Windows外觀、Motif外觀,以及其他一些用戶化主題之間切換。11.完整的一套組件工具Qt編程的基本模塊稱之為組件,組件是用戶界面的組成部分,Qt含有用來創(chuàng)建專業(yè)外觀的用戶界面所需要的所有組件。Qt creator介紹Qt creator是全新的跨平臺(tái)集成開發(fā)環(huán)境,為QT開發(fā)人員的需求量身定制,由于捆綁

34、了最新QT庫二進(jìn)制軟件包和附加的開發(fā)工具,并作為QT SDK的一部分,Qt creator在單獨(dú)的安裝程序內(nèi)提供了進(jìn)行跨平臺(tái)QT開發(fā)所需的全部工具。Qt creator主要是為了幫助新QT用戶更快速入門并運(yùn)行項(xiàng)目,還可提高有經(jīng)驗(yàn)的QT開發(fā)人員的工作效率。QT的功能和優(yōu)勢: 1.使用強(qiáng)大的C+代碼編輯器可快速編寫代碼:語言標(biāo)識(shí)和代碼完成功能;輸入時(shí)進(jìn)行靜態(tài)代碼校驗(yàn)以及提示樣式;上下文相關(guān)的幫助;代碼折疊;括號(hào)匹配和括號(hào)選擇模式;高級(jí)編輯功能。 2.使用瀏覽器工具管理源代碼:集成了領(lǐng)先的版本控制軟件,包括Git、Perforce和Subversion;開放式文件,無需知曉確切的名稱或位置;搜索類和

35、文件;跨不同位置或文件沿用符號(hào);在頭文件和源文件,或在聲明和定義之間切換。 3.為QT跨平臺(tái)開發(fā)人員的需求而量身定制:集成了特定于QT的功能,如信號(hào)與槽;圖示調(diào)試器,對(duì)QT類結(jié)構(gòu)可一目了然;集成QT Designer可視化布局和格式構(gòu)建器;只需單擊一下就可生成和運(yùn)行QT項(xiàng)目。 4.使用拖放功能快速設(shè)計(jì)用戶界面;定制widget,或從標(biāo)準(zhǔn)widget庫中選擇widget;以本地外觀快速預(yù)覽格式。 (5)通過界面原型生成C+或Java代碼:將QT Designer與Visual Studio或Eclipse IDE配合使用;使用QT信號(hào)與槽機(jī)制構(gòu)建功能齊全的用戶界面。Qt所支持的平臺(tái)1.嵌入式 L

36、inux(Embedded Linux) Qt for Embedded Linux 是用于嵌入式 Linux 所支持設(shè)備的領(lǐng)先應(yīng)用程序架構(gòu)。您可以使用 Qt 創(chuàng)建具有獨(dú)特用戶體驗(yàn)的具備高效內(nèi)存效率的設(shè)備和應(yīng)用程序。Qt 可以在任何支持 Linux 的平臺(tái)上運(yùn)行。Qt 的直觀 API,讓您只須少數(shù)幾行代碼便可以更短的時(shí)間實(shí)現(xiàn)更高端的功能。 特點(diǎn):用于Linux 的緊湊的視窗系統(tǒng);用于廣泛的應(yīng)用程序處理器的開發(fā);移植桌面代碼至嵌入式平臺(tái),或通過重新編譯,反之亦然;編譯移除不常使用的組件與功能;利用系統(tǒng)資源并實(shí)現(xiàn)本地化性能;開發(fā)嵌入式設(shè)備猶如開發(fā)桌面系統(tǒng)一樣輕松簡單。 Qt 除了提供所有工具以及

37、API 與 類庫 ,( 如 WebKit ) 外,Qt for Embedded Linux 還提供用于最優(yōu)化嵌入式開發(fā)環(huán)境的主要組件。 緊湊高效的視窗系統(tǒng) (QWS):Qt 構(gòu)建在標(biāo)準(zhǔn)的 API 上,應(yīng)用于嵌入式 Linux 設(shè)備,并帶有自己的緊湊視窗系統(tǒng)?;?Qt 的應(yīng)用程序直接寫入Linux 幀緩沖,解除了您對(duì) X11 視窗系統(tǒng)的需求。具有減少內(nèi)存消耗,占位更小,可利用硬件加速圖形的優(yōu)勢,可編譯移除不常使用的組件與功能等特點(diǎn)。 虛擬幀緩沖 (QVFb):Qt for Embedded Linux 提供一個(gè)虛擬幀緩沖器,可以采用點(diǎn)對(duì)點(diǎn)逐像素匹配物理設(shè)備顯示。具有真實(shí)的測試構(gòu)架,在桌面系統(tǒng)

38、上嵌入式測試,模擬物理設(shè)備顯示的寬度、高度與色深等特點(diǎn)。 進(jìn)程間通訊 (IPC):IPC (進(jìn)程間通訊)可以創(chuàng)建豐富的多應(yīng)用程序用戶體驗(yàn)。定義進(jìn)程間通訊的兩個(gè)主要概念即:信道與消息??梢赃M(jìn)程監(jiān)聽并向信道發(fā)送消息,任何時(shí)候只要監(jiān)聽到一個(gè)進(jìn)程便可創(chuàng)建信道。 擴(kuò)展的字體格式:Qt 支持嵌入式 Linux 上的多種字體格式,包括:TrueType, Postscript Type1 與 Qt 預(yù)呈現(xiàn)字體。Qt 擴(kuò)展了Unicode 支持,包括:構(gòu)建時(shí)自動(dòng)數(shù)據(jù)抽取和運(yùn)行時(shí)自動(dòng)更新。另外Qt還提供定制字體格式的插件,允許在運(yùn)行時(shí)輕松添加新字體引擎。應(yīng)用程序間的字體共享功能可以提高內(nèi)存效率?;疽鬄殚_發(fā)環(huán)

39、境:Linux 內(nèi)核 2.4 或更高;GCC 版本 3.3 或更高;用于 MIPS GCC 版本 3.4. 或更高。占用存儲(chǔ)空間:存儲(chǔ)空間取決于配置,壓縮后: 1.7 4.1 MB,未壓縮: 3.6 9.0 MB 。硬件平臺(tái):易于載入任何支持帶 C+ 編譯器和幀緩沖器驅(qū)動(dòng) Linux 的處理器。支持 ARM, x86, MIPS, PowerPC 。2.Mac平臺(tái) Qt 包括一套集成的開發(fā)工具,可加快在 Mac 平臺(tái)上的開發(fā)。在編寫 Qt 時(shí),并不需要去設(shè)想底層處理器的數(shù)字表示法、字節(jié)序或架構(gòu)。要在 Apple 平臺(tái)上支持 Intel 硬件,Qt 客戶只需重新編輯其應(yīng)用程序即可。 3.Wind

40、ows平臺(tái) 使用 Qt,只需一次性構(gòu)建應(yīng)用程序,無須重新編寫源代碼,便可跨多個(gè) Windows 操作系統(tǒng)的版本進(jìn)行部署。Qt 應(yīng)用程序支持 Windows Vista、Server 2003、XP、NT4、Me/98 和 Windows CE。 4.Linux/X11平臺(tái) Qt 包括一套集成的開發(fā)工具,可加快在 X11 平臺(tái)上的開發(fā)。Qt 由于是 KDE 桌面環(huán)境的基礎(chǔ),在各個(gè) Linux 社區(qū)人盡皆知。幾乎 KDE 中的所有功能都是基于 Qt 開發(fā)的, 而且 Qt 是全球社區(qū)成員用來開發(fā) 成千上萬的開源 KDE 應(yīng)用程序的基礎(chǔ)。5.Windows CE/Mobile Qt 是用 C+ 開發(fā)的

41、應(yīng)用程序和用戶界面框架。通過直觀的 API,您可以使用 Qt 為大量的設(shè)備編寫功能豐富的高性能應(yīng)用程序。Qt 包括一套豐富的工具集與直觀的API,意味著只須少數(shù)幾行代碼便可以更短的時(shí)間實(shí)現(xiàn)更高端的功能。 主要特點(diǎn):硬件依存性極?。恢С侄鄶?shù)現(xiàn)有的 Windows CE 配置;對(duì)于自定義的硬件配置亦輕松構(gòu)建;移植桌面代碼至嵌入式平臺(tái),或通過重新編譯,反之亦然;編譯移除不常使用的組件與功能;利用系統(tǒng)資源并實(shí)現(xiàn)高性能;開發(fā)嵌入式設(shè)備尤如開發(fā)桌面系統(tǒng)一樣輕松簡單。Qt 除了提供所有 工具 以及 API 與 類庫 外,Qt for Windows CE 還提供用于最優(yōu)化嵌入式開發(fā)環(huán)境的附加功能。 本地化和

42、可定制的外觀:Qt 在使用時(shí),可以支持 Windows Mobile 和 Windows CE 兩種樣式。 在運(yùn)行時(shí),Qt 應(yīng)用程序?qū)z測使用哪一種樣式。 采用 Qt 樣式表單,您只需要花費(fèi)用于傳統(tǒng) UI 風(fēng)格的少許時(shí)間和代碼行,便可以輕松定制您的應(yīng)用程序外觀。特點(diǎn):基于HTML 層疊式樣式表 (CSS);適用于全部 widget;任何熟悉 CSS 技術(shù)的人員都可以定義復(fù)雜的樣式。 先進(jìn)的文本布局引擎:Qt for Windows CE 支持 TrueType 和點(diǎn)陣字體。同時(shí) Qt 還支持?jǐn)U展的 Unicode 和從右至左的書寫語言。Qt 的富文本引擎增加了新的功能用于復(fù)雜的文本布局,包括制

43、表和路徑追蹤,以及環(huán)繞圖形的文本。 基本要求為開發(fā)環(huán)境: Microsoft Visual Studio 2005 (Standard Edition) 或更高ActivePerl。占用存儲(chǔ)空間:緊湊配置 4.8 MB,全配置 8.4 MB。操作系統(tǒng):Windows CE 5 或更高,Windows Mobile 5 或更高。硬件平臺(tái):支持 ARM, x86,(在 SH4 和 MIPS 上編譯)。6.塞班平臺(tái)(Symbian) Qt 通過和S60 框架的集成為 Symbian 平臺(tái)提供了支持。在最新版的Qt SDK 1.1中我們可以直接生成可以在塞班設(shè)備上運(yùn)行的sis文件。 7.MeeGo平臺(tái)

44、 (Maemo 6現(xiàn)更名為 MeeGo) Qt 是一個(gè)功能全面的應(yīng)用程序和用戶界面框架,用來開發(fā)Maemo 應(yīng)用程序,也可跨各主要設(shè)備和桌面操作系統(tǒng)部署這些程序且無需重新編寫源代碼的。 如果您在多數(shù)情況下開發(fā)適用于 Symbian、Maemo 或 MeeGo 平臺(tái)的應(yīng)用程序,可以使用免費(fèi) LGPL 授權(quán)方式的 Qt。 Qt 將為諾基亞設(shè)備運(yùn)行 MeeGo (Harmattan) 提供依托,并可為所有即將推出的 MeeGo 設(shè)備中的應(yīng)用程序開發(fā)提供 API,為 Qt 開發(fā)人員提供了更多平臺(tái)。不久,MeeGo 設(shè)備就會(huì)完全支持 (X11) Qt 。Qt類庫模塊化 Qt C+ 類庫提供一套豐富的應(yīng)用

45、程序生成塊 (block),包含了生成高級(jí)跨平臺(tái)應(yīng)用程序所需的全部功能。1.先進(jìn)的圖形用戶界面(GUI):Qt為您在桌面與嵌入式平臺(tái)上開發(fā)先進(jìn)的GUI應(yīng)用程序,帶來所有需要的功能。Qt使用所支持平臺(tái)的本地化圖形API,充分利用系統(tǒng)資源并給予應(yīng)用程序本地化的界面。 從按鈕和對(duì)話框到樹形視圖與表格都具有完整的控件(窗體),自動(dòng)縮放,字體、語言與屏幕定位識(shí)別布局引擎,支持抗鋸齒、矢量變形以及可縮放矢量圖形 (SVG) ,具有樣式API和窗體樣式表,可完全自定義用戶界面,支持嵌入式設(shè)備的硬件加速圖形和多重顯示功能2.基于OpenGL 與OpenGL Es的3D圖形:OpenGL 是一個(gè)標(biāo)準(zhǔn)的圖形庫,用

46、于構(gòu)建跨平臺(tái)和支持硬件加速的高性能可視化應(yīng)用程序。雖然OpenGL完美支持3D圖形,但卻不支持創(chuàng)建應(yīng)用程序用戶界面。Qt通過與OpenGL 的緊密集成解決了這一難題。 在您的應(yīng)用程序中輕松加入3D圖形,在嵌入式Linux 與Windows CE 平臺(tái)上使用OpenGL ES和OpenGL繪畫引擎利用系統(tǒng)資源實(shí)現(xiàn)最佳圖形性能支持Windows 平臺(tái)上的Direct3D。3多線程:多線程編程是一個(gè)執(zhí)行資源密集型操作而不會(huì)凍結(jié)應(yīng)用程序用戶界面的有效典范。Qt的跨平臺(tái)多線程功能簡化了并行編程,另外它附加的同步功能可以更加輕松地利用多核架構(gòu)。管理線程、數(shù)據(jù)和對(duì)象更加輕松,基于Qt的信號(hào)與槽,實(shí)現(xiàn)跨線程類

47、型安全的對(duì)象間通訊,高端API可以編譯多線程程序而無須使用底端基元。4.嵌入式設(shè)備的緊湊視窗系統(tǒng):Qt構(gòu)建在標(biāo)準(zhǔn)的 API基礎(chǔ)上,用于具有輕量級(jí)window系統(tǒng)的嵌入式 Linux 設(shè)備?;?Qt的應(yīng)用程序直接寫入 Linux 幀緩沖,解除了您對(duì) X11 視窗系統(tǒng)的需求。減少內(nèi)存消耗,內(nèi)存占用更小,可以編譯移除不常使用的組件與功能,可以利用硬件加速圖形,在桌面系統(tǒng)上的虛擬幀緩沖可用于嵌入式開發(fā)與調(diào)試。 5.對(duì)象間通訊:在開發(fā)用戶圖形界面中,一個(gè)常見的、重復(fù)發(fā)生系統(tǒng)崩潰與問題的癥結(jié)根源是如何在不同組件之間進(jìn)行通信。對(duì)于該問題,Qt 的解決方案是信號(hào)與槽機(jī)制,即執(zhí)行Observer設(shè)計(jì)模式。我們

48、可以簡單理解為當(dāng)特殊事件發(fā)生的時(shí)候,信號(hào)就被發(fā)出了,一個(gè)插槽就是一個(gè)函數(shù),被稱作特定信號(hào)的響應(yīng)。信號(hào)與槽機(jī)制是類型安全的(type safe),任意信號(hào)都可以連接任意或多個(gè)插槽,或跨多個(gè)線程,簡化真正的組件編程。6.2D圖形:Qt給您提供一個(gè)功能強(qiáng)大的2D圖形畫布,用以管理和集成大量的圖形元素。高精度可視化大量元素,將窗體互動(dòng)嵌入至圖形場景中,支持縮放、旋轉(zhuǎn)、動(dòng)畫與透視變換。7.多媒體框架:Qt使用 Phonon多媒體框架為眾多的多媒體格式提供跨桌面與嵌入式操作系統(tǒng)的回放功能。Phonon可以輕松將音頻與視頻回放功能加入到Qt應(yīng)用程序當(dāng)中,并且在每個(gè)目標(biāo)平臺(tái)上提取多媒體格式與框架。以平臺(tái)獨(dú)立的

49、方式提供多媒體內(nèi)容,從本地文件讀取媒體或讀取網(wǎng)絡(luò)上的流媒體,提取Mac上Quick Time ,Windows 上的DirectShow 以及 Linux 上的Gstreamer。8.WebKit集成:Qt WebKit集成,即Qt集成了WebKit功能,WebKit是KDE項(xiàng)目下基于 KHTML的開放源web瀏覽器引擎。目前 Apple,Google 與Nokia等公司使用Qt WebKit集成。將web與本地內(nèi)容和服務(wù)整合在單一的富應(yīng)用程序當(dāng)中,快速創(chuàng)建整合實(shí)時(shí)web內(nèi)容與服務(wù)的應(yīng)用程序,使用集成在本地代碼中的 HTML 與Java Script,完全控制跨平臺(tái)的瀏覽器環(huán)境。9.網(wǎng)絡(luò)連接:

50、Qt 讓您網(wǎng)絡(luò)編程更簡單,并支持跨平臺(tái)網(wǎng)絡(luò)編程。完整的客戶/服務(wù)器插口提取,支持 ,F(xiàn)TP,DNS 與異步 1.1,無論HTML 和XML或圖象與媒體文件,它都可以存取所有類型的數(shù)據(jù)。10.XML:Qt 為XML 文件以及SAX 和 DOM 協(xié)議的C+實(shí)現(xiàn),提供了一個(gè)流媒體文件讀寫器。同時(shí) Qt 還包含了 XQuery 一個(gè)簡單的類似 SQL的查詢語言,用于解析XML文件來選擇和聚合所需要的XML元素,并且將它們轉(zhuǎn)換成XML輸出或其它格式的輸出。僅需少數(shù)幾行代碼便可實(shí)現(xiàn)先進(jìn)的 XML 查詢,完全支持 XQuery 1.0 和 XPath 2.0,在您自己的應(yīng)用程序中從XML查詢、抽取和轉(zhuǎn)換數(shù)據(jù)

51、。 11.腳本引擎:Qt 包含一個(gè)完全集成 ECMA 標(biāo)準(zhǔn)的腳本引擎。 QtScript 提供 QObject 集成,把 Qt的信號(hào)與槽機(jī)制整合成腳本,并且實(shí)現(xiàn)了C+ 與腳本的集成。 基于ECMA 標(biāo)準(zhǔn)的腳本語言 (ECMAScript 3是JavaScript 1.5的基礎(chǔ)),為簡化的對(duì)象間通訊使用Qt的信號(hào)與槽機(jī)制開創(chuàng)新的契機(jī)將腳本與您的Qt應(yīng)用程序相集成。12.數(shù)據(jù)庫:Qt 幫助您將數(shù)據(jù)庫與您的Qt應(yīng)用程序無縫集成。Qt支持所有主要的數(shù)據(jù)驅(qū)動(dòng),并可讓您將SQL發(fā)送到數(shù)據(jù)庫服務(wù)器,或者讓 Qt SQL類自動(dòng)生成 SQL 查詢。支持所有主要的數(shù)據(jù)庫驅(qū)動(dòng)。以多種視圖或數(shù)據(jù)識(shí)別表單方式顯示數(shù)據(jù)。

52、 FTP通信協(xié)議FTP基本簡介FTP是TCP/IP網(wǎng)絡(luò)上兩臺(tái)計(jì)算機(jī)傳送文件的協(xié)議,F(xiàn)TP是在TCP/IP網(wǎng)絡(luò)和INTERNET上最早使用的協(xié)議之一。FTP是TCP/IP的一種具體應(yīng)用,它工作在OSI模型的第七層,TCP模型的第四層,即應(yīng)用層,同時(shí)在傳輸層使用TCP,所以FTP客戶在和服務(wù)器建立連接前就要經(jīng)過一個(gè)被稱作三次握手的過程。其連接是可靠的,傳輸是面向連接的,所以能為數(shù)據(jù)傳輸提供可靠的保證。FTP是一個(gè)8位的客戶端-服務(wù)器協(xié)議,能操作任何類型的文件而不需要進(jìn)一步處理,就像MIME或Unicode一樣。但是,F(xiàn)TP有著極高的延時(shí),這意味著,從開始請(qǐng)求到第一次接收需求數(shù)據(jù)之間的時(shí)間會(huì)非常長,

53、并且不時(shí)的必需執(zhí)行一些冗長的登錄進(jìn)程。FTP服務(wù)一般運(yùn)行在20和21兩個(gè)端口。端口20用于在客戶端和服務(wù)器之間傳輸數(shù)據(jù)流,而端口21用于傳輸控制流,并且是命令通向ftp服務(wù)器的進(jìn)口。當(dāng)數(shù)據(jù)通過數(shù)據(jù)流傳輸時(shí),控制流處于空閑狀態(tài)。而當(dāng)控制流空閑很長時(shí)間后,客戶端的防火墻會(huì)將其會(huì)話置為超時(shí),這樣當(dāng)大量數(shù)據(jù)通過防火墻時(shí),會(huì)產(chǎn)生一些問題。此時(shí),雖然文件可以成功的傳輸,但因?yàn)榭刂茣?huì)話會(huì)被防火墻斷開,傳輸會(huì)產(chǎn)生一些錯(cuò)誤。FTP工作原理TP協(xié)議中,控制連接均由客戶端發(fā)起,而數(shù)據(jù)連接有兩種工作方式:PORT方式和PASV方式。下面以PORT方式為例,如圖1所示: 1.FTP服務(wù)器運(yùn)行FTP守護(hù)進(jìn)程,等待用戶的F

54、TP請(qǐng)求。2.用戶運(yùn)行FTP命令,請(qǐng)求FTP服務(wù)器為其服務(wù)3.FTP守護(hù)進(jìn)程收到用戶的FTP請(qǐng)求后,派生出FTP子進(jìn)程與用戶進(jìn)程 交互,建立文件傳輸控制連接,使用TCP端口21。 4.用戶輸入FTP子命令,服務(wù)器接收子命令,如命令正確,雙方各派生一個(gè)數(shù)據(jù)傳輸進(jìn)程FTP-DATA,建立數(shù)據(jù)連接,使用TCP端口20進(jìn)行數(shù)據(jù)傳輸。 5.本次子命令請(qǐng)求的數(shù)據(jù)傳輸完畢,拆除數(shù)據(jù)連接,結(jié)束FTP-DATA進(jìn)程。 6.用戶繼續(xù)輸入FTP子命令,重復(fù)、的過程,直至用戶輸入quit命令, 雙方拆除控制連接,結(jié)束文件傳輸,結(jié)束FTP子進(jìn)程。 FTP客戶端 FTP服務(wù)器 FTP守護(hù)進(jìn)程 控制進(jìn)程 fork 數(shù)據(jù)傳輸

55、進(jìn)程 forkFTPd FTP請(qǐng)求FTP 控制連接(會(huì)話)FTP (端口21)FTP-DATA 數(shù)據(jù)連接(傳輸)FTP-DATA (端口20)圖 2-2 FTP工作原理圖FTP的作用FTP的在文件傳輸中起到很重要的作用,具體的作用有以下幾點(diǎn):1.可以促進(jìn)文件的共享(計(jì)算機(jī)程序或數(shù)據(jù))2.支持間接或者隱式的使用遠(yuǎn)程計(jì)算機(jī)3.向用戶屏蔽不同主機(jī)中各種文件存儲(chǔ)系統(tǒng)的細(xì)節(jié)4.可靠和高效的傳輸數(shù)據(jù)FTP的使用FTP有兩種使用模式:主動(dòng)和被動(dòng)。主動(dòng)模式要求客戶端和服務(wù)端同時(shí)打開并且建統(tǒng)一個(gè)端口以創(chuàng)建連接。在這種情況下,客戶端由于安裝了防火墻會(huì)產(chǎn)生一些問題。所以,創(chuàng)立了被動(dòng)模式。被動(dòng)模式只要求服務(wù)器端產(chǎn)生一

56、個(gè)堅(jiān)挺相應(yīng)端口的進(jìn)程,這樣就可以繞開客戶端安裝了防火墻的問題。一個(gè)主動(dòng)模式的FTP連接創(chuàng)建要遵循以下步驟:客戶端打開一個(gè)隨機(jī)的端口(端口號(hào)大于1024,在這里,我們稱它為x),同時(shí)一個(gè)FTP進(jìn)程連接至服務(wù)器的21號(hào)命令端口。此時(shí),該TCP連接的來源地端口為客戶端指定的隨機(jī)端口x,目的地端口(遠(yuǎn)程端口)為服務(wù)器上的21號(hào)端口。客戶端開始監(jiān)聽端口(x1),同時(shí)向服務(wù)器發(fā)送一個(gè)端口命令(通過服務(wù)器的 21號(hào)命令端口),此命令告訴服務(wù)器客戶端正在監(jiān)聽的端口號(hào)并且已準(zhǔn)備好從此端口接收數(shù)據(jù)。這個(gè)端口就是我們所知的數(shù)據(jù)端口。服務(wù)器打開 20 號(hào)源端口并且創(chuàng)建和客戶端數(shù)據(jù)端口的連接。此時(shí),來源地的端口為 20

57、,遠(yuǎn)程數(shù)據(jù)目的地端口為(x1)??蛻舳送ㄟ^本地的數(shù)據(jù)端口創(chuàng)建一個(gè)和服務(wù)器 20 號(hào)端口的連接,然后向服務(wù)器發(fā)送一個(gè)應(yīng)答,告訴服務(wù)器它已經(jīng)創(chuàng)建好了一個(gè)連接。被動(dòng)模式FTP: 為了解決服務(wù)器發(fā)起到客戶的連接的問題,人們開發(fā)了一種不同的FTP連接方式。這就是所謂的被動(dòng)方式,或者叫做PASV,當(dāng)客戶端通知服務(wù)器它處于被動(dòng)模式時(shí)才啟用。在被動(dòng)方式FTP中,命令連接和數(shù)據(jù)連接都由客戶端發(fā)起,這樣就可以解決從服務(wù)器到客戶端的數(shù)據(jù)端口的入方向連接被防火墻過濾掉的問題。當(dāng)開啟一個(gè) FTP連接時(shí),客戶端打開兩個(gè)任意的非特權(quán)本地端口(N 1024和N+1)。第一個(gè)端口連接服務(wù)器的21端口,但與主動(dòng)方式的FTP不同,

58、客戶端不會(huì)提交PORT命令并允許服務(wù)器來回連它的數(shù)據(jù)端口,而是提交 PASV命令。這樣做的結(jié)果是服務(wù)器會(huì)開啟一個(gè)任意的非特權(quán)端口(P 1024),并發(fā)送PORT P命令給客戶端。然后客戶端發(fā)起從本地端口N+1到服務(wù)器的端口P的連接用來傳送數(shù)據(jù)。對(duì)于服務(wù)器端的防火墻來說,必須允許下面的通訊才能支持被動(dòng)方式的FTP:1. 從任何大于1024的端口到服務(wù)器的21端口 (客戶端的初始化連接)2.服務(wù)器的21端口到任何大于1024的端口 (服務(wù)器響應(yīng)到客戶端的控制端口的連接)3. 從任何大于1024端口到服務(wù)器的大于1024端口 (客戶端初始化數(shù)據(jù)連接到服務(wù)器指定的任意端口)4.服務(wù)器的大于1024端口

59、到遠(yuǎn)程的大于1024的端口(服務(wù)器發(fā)送ACK響應(yīng)和數(shù)據(jù)到客戶端的數(shù)據(jù)端口FTP的缺點(diǎn)密碼和文件內(nèi)容都使用明文傳輸,可能產(chǎn)生不希望發(fā)生的竊聽事件,因?yàn)楸仨氶_放一個(gè)隨機(jī)的端口以創(chuàng)建連接,當(dāng)防火墻存在時(shí),客戶端很難過濾處于主動(dòng)模式下的 FTP 流量,這個(gè)問題,通過使用被動(dòng)模式的 FTP,得到了很大解決。服務(wù)器可能會(huì)被告知連接一個(gè)第三方計(jì)算機(jī)的保留端口,此方式在需要傳輸文件數(shù)量很多的小文件時(shí),性能不好。 FTP 通信協(xié)議雖然可以被終端用戶直接使用,但是它是設(shè)計(jì)成被 FTP 客戶端程序所控制。運(yùn)行 FTP 服務(wù)的許多站點(diǎn)都開放匿名服務(wù),在這種設(shè)置下,用戶不需要帳號(hào)就可以登錄服務(wù)器,默認(rèn)情況下,匿名用戶的

60、用戶名是:“anonymous”。這個(gè)帳號(hào)不需要密碼,雖然通常要求輸入用戶的郵件地址作為認(rèn)證密碼,但這只是一些細(xì)節(jié)或者此郵件地址根本不被確定,而是依賴于 FTP 服務(wù)器的配置情況。FTP的效率較低:從FTP服務(wù)器上檢索一個(gè)文件,包含繁復(fù)的交換握手步驟:客戶端建立到FTP服務(wù)器端控制端口的TCP Socket鏈接,并等待TCP握手完成;客戶端等待服務(wù)器端發(fā)送回執(zhí);客戶端向服務(wù)器端發(fā)送用戶名并等待響應(yīng);客戶端向服務(wù)器端發(fā)送密碼并等待響應(yīng); 客戶端向服務(wù)器端發(fā)送SYST命令并等待響應(yīng);客戶端向服務(wù)器端發(fā)送TYPE I命令并等待響應(yīng);如果用戶需要在服務(wù)器端切換目錄,客戶端仍然發(fā)送命令并等待響應(yīng);主動(dòng)模

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論