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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

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

2、列表,從而對指定文件的上傳和下載功能,具有一定的實用性和方便性。關鍵詞:FTP;跨平臺;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 當前發(fā)展 PAGEREF _Toc8061 2 HYPERLINK l _Toc7902 1.4 所做工作 PAGEREF _Toc7902 2 HYPERLINK l _Toc27396 2 相關基礎技術與開發(fā)平臺 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編程機制簡介 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所支持的平臺 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的缺點 PAGEREF _Toc23246 12 HYPERLINK l _Toc15681 3 需求分析 PAGEREF _Toc15681 13 HYPERLINK l _Toc19748 3.1 設計目的 PAGEREF _Toc19748 13 HYPERLINK l _Toc9847 3.2 完成目標 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 界面設計需求 PAGEREF _Toc22599 14 HYPERLINK l _Toc9329 4 軟件總體分析與設計 PAGEREF _Toc932

11、9 15 HYPERLINK l _Toc28146 4.1 系統(tǒng)模塊設計 PAGEREF _Toc28146 15 HYPERLINK l _Toc8549 4.2 詳細設計 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)設計與程序的實現(xiàn) PAGEREF _Toc7474 19 HYPERLINK l _Toc29704 4.3.1 界面實現(xiàn)部分 PAGEREF _Toc29704 19 HYPERLINK l _Toc20467 4.3.2 模塊功能的實現(xiàn) PAGEREF _Toc20467 20 HYPERLINK l _Toc17826 5 系統(tǒng)運行及測試 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)運行 PAGEREF _Toc8893 28 HYPERLINK l _Toc13233 5.2.1運行前分析 PAGEREF _Toc13233 28 HYPERLINK l _Toc10398 5.2.2主要功能運行 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)的錯誤及解決方案 PAGEREF _Toc13651 35 HYPERLINK l _Toc6

15、756 5.4 小結 PAGEREF _Toc6756 35 HYPERLINK l _Toc26934 總結 PAGEREF _Toc26934 36 HYPERLINK l _Toc2842 參考文獻 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)進入了21世紀,科學技術的突飛猛進

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

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

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

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

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

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

22、涉及到用戶下載的網(wǎng)站都提供了FTP服務,特別是校園中也可以利用FTP服務器來使身處校園中的每個人都可以通過FTP來下載或共享文件,這使得每個人都能享受到網(wǎng)絡的便捷。在現(xiàn)如今網(wǎng)絡上有許多的FTP客戶端類的軟件,但是其中大部分都是由于其界面復雜,操作繁瑣,不被大多數(shù)用戶接受,為了更好的利用網(wǎng)絡資源,為了方便用戶使用FTP,我設計了一個非常簡單容易使用用的FTP 客戶端。相關基礎技術與開發(fā)平臺 QT開發(fā)工具簡介Qt的主要特性Qt是一個跨平臺的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的主要特點有: 面向?qū)ο螅?很容易擴展, 并且允許真正的組件編程; Qt對各個模塊進行了良好的封裝,使各模塊可重用性較好;優(yōu)良的跨平臺特性,使用Qt類編寫的程序可以實現(xiàn) “一次編碼,到處編譯”,極大的降低了跨平臺開發(fā)的難度;構件支持,對于對象間通信,Qt沒有采用函數(shù)回調(diào)的方法,而是采用了一種全新并且可選的被稱為“信號與槽” 的對象間通信機制,通過一個對象信號的發(fā)射,另一個槽函數(shù)的響應,使各個對象之間的通信安全而且高效。 Qt的這些

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

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

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

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

28、必須與它的接收槽的簽名相匹配。(實際上一個槽的簽名可以比它接收的信號的簽名少,因為它可以忽略額外的簽名。)因為簽名是一致的,編譯器就可以幫助我們檢測類型不匹配。它以警告的方式報告類型錯誤,而不會使系統(tǒng)產(chǎn)生崩潰。信號和槽是寬松地聯(lián)系在一起的:一個發(fā)射信號的類不用知道也不用注意哪個槽要接收這個信號(Johan Thelin,2007)。Qt的信號和槽的機制可以保證如果你把一個信號和一個槽連接起來,槽會在正確的時間使用信號的參數(shù)而被調(diào)用。信號和槽可以使用任何數(shù)量、任何類型的參數(shù)。它們是完全類型安全的:不會再有回調(diào)核心轉(zhuǎn)儲(core dump)。你可以把許多信號和你所希望的單一槽相連,并且一個信號也可

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論