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

下載本文檔

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

文檔簡介

1、 太原理工大學畢業(yè)設計(論文)用紙選題的目的和意義 選題背景現(xiàn)如今人類已經(jīng)進入了21世紀,科學技術的突飛猛進的發(fā)展,知識經(jīng)濟的初見端倪,和Internet技術的迅猛發(fā)展與普及,推動了整個世界范圍的信息的傳輸和信息的交流。FTP協(xié)議是Internet上最早的應用也是最廣泛的應用,直到目前為止它仍然是最重要的同時也是最基本的應用之一,在互聯(lián)網(wǎng)剛開始發(fā)展的時候曾經(jīng)占據(jù)整個互聯(lián)網(wǎng)通信量的三分之一。FTP主要解決了在不同操作系統(tǒng)下處理文件格式的不兼容的問題,如果用戶想使用其他計算機上的文件,最理想的辦法就是把它復制到自己的計算機當中,方便在自己的計算機中使用。FTP客戶端正是完成這項工作的工具,成千上百

2、萬的數(shù)據(jù)、資料分布在世界各地,有了FTP客戶端之后,只要輕點幾下鼠標,就可以輕而易舉的獲得你想要的任何資料。在眾多的網(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é)議,使用前景仍然寬廣,

3、功能會更加強大。 目的和意義 FTP協(xié)議是TCP/IP網(wǎng)絡上兩臺計算機傳送文件的協(xié)議,F(xiàn)TP是在TCP/IP網(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é)議的傳輸速度比較快,我們在制作諸如

4、“軟件下載”這類網(wǎng)站時喜歡用FTP來實現(xiàn),同時我們這種服務面向大眾,不需要身份認證,即“匿名FTP服務器”。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)解決問題,提高

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

6、用FTP,就需要有登陸服務器的注冊賬號,或者匿名FTP的服務器來使用。與Telnet類似,F(xiàn)TP最早的設計用于兩臺不同的主機,這兩個主機可能運行在不同的操作系統(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ā)生多大的變化,但是在Int

7、ernet迅猛的發(fā)展的形勢下,其安全問題還是日益突出出來。但是FTP還是非常的流行,大部分的網(wǎng)站以及論壇等等涉及到用戶下載的網(wǎng)站都提供了FTP服務,特別是校園中也可以利用FTP服務器來使身處校園中的每個人都可以通過FTP來下載或共享文件,這使得每個人都能享受到網(wǎng)絡的便捷。在現(xiàn)如今網(wǎng)絡上有許多的FTP客戶端類的軟件,但是其中大部分都是由于其界面復雜,操作繁瑣,不被大多數(shù)用戶接受,為了更好的利用網(wǎng)絡資源,為了方便用戶使用FTP,我設計了一個非常簡單容易使用用的FTP 客戶端。相關基礎技術與開發(fā)平臺 QT開發(fā)工具簡介Qt的主要特性Qt是一個跨平臺的C+圖形用戶界面庫,是由挪威TrollTech公司開

8、發(fā),目前包括Qt/X11、基于Framebuffer的Qt/Embedded、快速開發(fā)工具Qt Designer以及國際化工具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)的方法,而是采用了一種全新并且可選的被稱為“信號與槽”

9、的對象間通信機制,通過一個對象信號的發(fā)射,另一個槽函數(shù)的響應,使各個對象之間的通信安全而且高效。 Qt的這些特點使它非常適合于真正的構件編程, 同時使各個組件之間的協(xié)同工作變得十分簡單,并且 Qt是直接基于 Xlib的,不依賴 Motif 工具包, 所以它的執(zhí)行效率比一般的基于平臺的代碼的執(zhí)行效率要高。Qt類庫是一個擁有超過400個的C+類,同時不斷擴展的庫。它封裝了用于端到端應用程序開發(fā)所需要的所有基礎結構。優(yōu)秀的Qt應用程序接口包括成熟的對象模型,內(nèi)容豐富的集合類,圖形用戶界面編程與布局設計功能,數(shù)據(jù)庫編程,網(wǎng)絡,XML,國際化,OpenGL集成等。Qt設計者是一個功能強大的GUI布局與窗

10、體構造器,能夠在所有支持平臺上,以本地化的視圖外觀與認知,快速開發(fā)高性能的用戶界面。Qt語言家是一套用來消除國際化工作流程所帶來障礙的工具。使用Qt語言家,開發(fā)小組可把應用程序的翻譯轉(zhuǎn)換外包給非技術性翻譯人員,從而可增加精確度,大大加快本地化處理過程。Qt助手是一個完全可自定義,重新分配的幫助文件或文檔瀏覽器,它可與基于Qt的應用程序運行。使用Qt助手,開發(fā)小組同樣能夠很大程度上加快文檔的處理過程。Qt編程機制簡介信號/槽機制是Qt的一個最重要的特征并且也許是Qt與其它工具包的最不相同的部分。在圖形用戶界面編程中,我們經(jīng)常希望一個窗口部件的一個變化被通知給另一個窗口部件。更一般地,我們希望任何

11、一類的對象可以和其它對象進行通訊。較老的工具包使用一種被稱作回調(diào)的通訊方式來實現(xiàn)同一目的?;卣{(diào)是指一個函數(shù)的指針,所以如果你希望一個處理函數(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的窗口部件有很多預定義的信號,但我們也可以通過繼承來加入我們自己的信號。槽就是一個可以被

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

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

14、安全的:不會再有回調(diào)核心轉(zhuǎn)儲(core dump)。你可以把許多信號和你所希望的單一槽相連,并且一個信號也可以和你所期望的許多槽相連。把一個信號和另一個信號直接相連也是可以的。(這時,只要第一個信號被發(fā)射時,第二個信號立刻就被發(fā)射。)總體來看,信號和槽構成了一個強有力的組件編程機制。如果一個類要使用信號與槽機制,它就必須是從QObject或QObject的子類繼承,而且類的定義必須加上Q_OBJECT宏。signals、slots和emit是Qt特有的關鍵字,分別用來表示信號、槽、和發(fā)送信號,移除這些關鍵字和預處理程序,就可以使用標準的C+編譯器。槽同其他函數(shù)一樣也具有訪問權限,只是槽的訪問權

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

16、1插槽 2插槽 3connect(對象3,信號1,對象4,插槽3)圖2-1 信號和槽的連接原理圖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.構

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

18、在Qt中生成用戶自定義的組件非常簡單,而且易于修改組建的行為。8.國際化Qt為本地化應用提供了完全的支持,所有用戶界面文本都可以基于消息翻譯表被翻譯成各國語言,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介紹

19、Qt creator是全新的跨平臺集成開發(fā)環(huán)境,為QT開發(fā)人員的需求量身定制,由于捆綁了最新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、

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

21、E配合使用;使用QT信號與槽機制構建功能齊全的用戶界面。Qt所支持的平臺1.嵌入式 Linux(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)

22、本地化性能;開發(fā)嵌入式設備猶如開發(fā)桌面系統(tǒng)一樣輕松簡單。 Qt 除了提供所有工具以及 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 提供

23、一個虛擬幀緩沖器,可以采用點對點逐像素匹配物理設備顯示。具有真實的測試構架,在桌面系統(tǒng)上嵌入式測試,模擬物理設備顯示的寬度、高度與色深等特點。 進程間通訊 (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還提供定制字體格式的插件,允許

24、在運行時輕松添加新字體引擎。應用程序間的字體共享功能可以提高內(nèi)存效率?;疽鬄殚_發(fā)環(huán)境: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é)序或架構。要在 Appl

25、e 平臺上支持 Intel 硬件,Qt 客戶只需重新編輯其應用程序即可。 3.Windows平臺 使用 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ā) 成千上萬的開源 K

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

27、t for Windows CE 還提供用于最優(yōu)化嵌入式開發(fā)環(huán)境的附加功能。 本地化和可定制的外觀:Qt 在使用時,可以支持 Windows Mobile 和 Windows CE 兩種樣式。 在運行時,Qt 應用程序?qū)z測使用哪一種樣式。 采用 Qt 樣式表單,您只需要花費用于傳統(tǒng) UI 風格的少許時間和代碼行,便可以輕松定制您的應用程序外觀。特點:基于HTML 層疊式樣式表 (CSS);適用于全部 widget;任何熟悉 CSS 技術的人員都可以定義復雜的樣式。 先進的文本布局引擎:Qt for Windows CE 支持 TrueType 和點陣字體。同時 Qt 還支持擴展的 Unico

28、de 和從右至左的書寫語言。Qt 的富文本引擎增加了新的功能用于復雜的文本布局,包括制表和路徑追蹤,以及環(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

29、SDK 1.1中我們可以直接生成可以在塞班設備上運行的sis文件。 7.MeeGo平臺 (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 設

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

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

32、更加輕松地利用多核架構。管理線程、數(shù)據(jù)和對象更加輕松,基于Qt的信號與槽,實現(xiàn)跨線程類型安全的對象間通訊,高端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)崩潰與問題的癥結根源是如何在不同組件之間進行

33、通信。對于該問題,Qt 的解決方案是信號與槽機制,即執(zhí)行Observer設計模式。我們可以簡單理解為當特殊事件發(fā)生的時候,信號就被發(fā)出了,一個插槽就是一個函數(shù),被稱作特定信號的響應。信號與槽機制是類型安全的(type safe),任意信號都可以連接任意或多個插槽,或跨多個線程,簡化真正的組件編程。6.2D圖形:Qt給您提供一個功能強大的2D圖形畫布,用以管理和集成大量的圖形元素。高精度可視化大量元素,將窗體互動嵌入至圖形場景中,支持縮放、旋轉(zhuǎn)、動畫與透視變換。7.多媒體框架:Qt使用 Phonon多媒體框架為眾多的多媒體格式提供跨桌面與嵌入式操作系統(tǒng)的回放功能。Phonon可以輕松將音頻與視頻

34、回放功能加入到Qt應用程序當中,并且在每個目標平臺上提取多媒體格式與框架。以平臺獨立的方式提供多媒體內(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)容與服務的應用程序,使用集成在本地代

35、碼中的 HTML 與Java Script,完全控制跨平臺的瀏覽器環(huán)境。9.網(wǎng)絡連接:Qt 讓您網(wǎng)絡編程更簡單,并支持跨平臺網(wǎng)絡編程。完整的客戶/服務器插口提取,支持 HTTP,F(xiàn)TP,DNS 與異步 HTTP 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 查詢,

36、完全支持 XQuery 1.0 和 XPath 2.0,在您自己的應用程序中從XML查詢、抽取和轉(zhuǎn)換數(shù)據(jù)。 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ù)庫服務器,或者讓

37、 Qt SQL類自動生成 SQL 查詢。支持所有主要的數(shù)據(jù)庫驅(qū)動。以多種視圖或數(shù)據(jù)識別表單方式顯示數(shù)據(jù)。 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或Un

38、icode一樣。但是,F(xiàn)TP有著極高的延時,這意味著,從開始請求到第一次接收需求數(shù)據(jù)之間的時間會非常長,并且不時的必需執(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方

39、式和PASV方式。下面以PORT方式為例,如圖1所示: 1.FTP服務器運行FTP守護進程,等待用戶的FTP請求。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命令, 雙方拆除控制連接,結

40、束文件傳輸,結束FTP子進程。 FTP客戶端 FTP服務器 FTP守護進程 控制進程 fork 數(shù)據(jù)傳輸進程 forkFTPd FTP請求 forkFTPdFTPFTP 控制連接(會話)FTP (端口21)FTPFTP-DATAFTP-DATA 數(shù)據(jù)連接(傳輸)FTP-DATA (端口20)FTP-DATA圖 2-2 FTP工作原理圖FTP的作用FTP的在文件傳輸中起到很重要的作用,具體的作用有以下幾點:1.可以促進文件的共享(計算機程序或數(shù)據(jù))2.支持間接或者隱式的使用遠程計算機3.向用戶屏蔽不同主機中各種文件存儲系統(tǒng)的細節(jié)4.可靠和高效的傳輸數(shù)據(jù)FTP的使用FTP有兩種使用模式:主動和被動

41、。主動模式要求客戶端和服務端同時打開并且建統(tǒng)一個端口以創(chuàng)建連接。在這種情況下,客戶端由于安裝了防火墻會產(chǎn)生一些問題。所以,創(chuàng)立了被動模式。被動模式只要求服務器端產(chǎn)生一個堅挺相應端口的進程,這樣就可以繞開客戶端安裝了防火墻的問題。一個主動模式的FTP連接創(chuàng)建要遵循以下步驟:客戶端打開一個隨機的端口(端口號大于1024,在這里,我們稱它為x),同時一個FTP進程連接至服務器的21號命令端口。此時,該TCP連接的來源地端口為客戶端指定的隨機端口x,目的地端口(遠程端口)為服務器上的21號端口??蛻舳碎_始監(jiān)聽端口(x1),同時向服務器發(fā)送一個端口命令(通過服務器的 21號命令端口),此命令告訴服務器客

42、戶端正在監(jiān)聽的端口號并且已準備好從此端口接收數(shù)據(jù)。這個端口就是我們所知的數(shù)據(jù)端口。服務器打開 20 號源端口并且創(chuàng)建和客戶端數(shù)據(jù)端口的連接。此時,來源地的端口為 20,遠程數(shù)據(jù)目的地端口為(x1)。客戶端通過本地的數(shù)據(jù)端口創(chuàng)建一個和服務器 20 號端口的連接,然后向服務器發(fā)送一個應答,告訴服務器它已經(jīng)創(chuàng)建好了一個連接。被動模式FTP: 為了解決服務器發(fā)起到客戶的連接的問題,人們開發(fā)了一種不同的FTP連接方式。這就是所謂的被動方式,或者叫做PASV,當客戶端通知服務器它處于被動模式時才啟用。在被動方式FTP中,命令連接和數(shù)據(jù)連接都由客戶端發(fā)起,這樣就可以解決從服務器到客戶端的數(shù)據(jù)端口的入方向連接

43、被防火墻過濾掉的問題。當開啟一個 FTP連接時,客戶端打開兩個任意的非特權本地端口(N 1024和N+1)。第一個端口連接服務器的21端口,但與主動方式的FTP不同,客戶端不會提交PORT命令并允許服務器來回連它的數(shù)據(jù)端口,而是提交 PASV命令。這樣做的結果是服務器會開啟一個任意的非特權端口(P 1024),并發(fā)送PORT P命令給客戶端。然后客戶端發(fā)起從本地端口N+1到服務器的端口P的連接用來傳送數(shù)據(jù)。對于服務器端的防火墻來說,必須允許下面的通訊才能支持被動方式的FTP:1. 從任何大于1024的端口到服務器的21端口 (客戶端的初始化連接)2.服務器的21端口到任何大于1024的端口 (

44、服務器響應到客戶端的控制端口的連接)3. 從任何大于1024端口到服務器的大于1024端口 (客戶端初始化數(shù)據(jù)連接到服務器指定的任意端口)4.服務器的大于1024端口到遠程的大于1024的端口(服務器發(fā)送ACK響應和數(shù)據(jù)到客戶端的數(shù)據(jù)端口FTP的缺點密碼和文件內(nèi)容都使用明文傳輸,可能產(chǎn)生不希望發(fā)生的竊聽事件,因為必須開放一個隨機的端口以創(chuàng)建連接,當防火墻存在時,客戶端很難過濾處于主動模式下的 FTP 流量,這個問題,通過使用被動模式的 FTP,得到了很大解決。服務器可能會被告知連接一個第三方計算機的保留端口,此方式在需要傳輸文件數(shù)量很多的小文件時,性能不好。 FTP 通信協(xié)議雖然可以被終端用戶

45、直接使用,但是它是設計成被 FTP 客戶端程序所控制。運行 FTP 服務的許多站點都開放匿名服務,在這種設置下,用戶不需要帳號就可以登錄服務器,默認情況下,匿名用戶的用戶名是:“anonymous”。這個帳號不需要密碼,雖然通常要求輸入用戶的郵件地址作為認證密碼,但這只是一些細節(jié)或者此郵件地址根本不被確定,而是依賴于 FTP 服務器的配置情況。FTP的效率較低:從FTP服務器上檢索一個文件,包含繁復的交換握手步驟:客戶端建立到FTP服務器端控制端口的TCP Socket鏈接,并等待TCP握手完成;客戶端等待服務器端發(fā)送回執(zhí);客戶端向服務器端發(fā)送用戶名并等待響應;客戶端向服務器端發(fā)送密碼并等待響

46、應; 客戶端向服務器端發(fā)送SYST命令并等待響應;客戶端向服務器端發(fā)送TYPE I命令并等待響應;如果用戶需要在服務器端切換目錄,客戶端仍然發(fā)送命令并等待響應;主動模式下,客戶端需要發(fā)送PORT命令到服務器端,然后等待響應(被動模式與主動模式相反);建立數(shù)據(jù)傳輸鏈接(需要經(jīng)過三次握手,建立一條TCP Socket連接);通過鏈接傳輸數(shù)據(jù);客戶端等待服務器端從控制連接發(fā)送2xx指令,以確保數(shù)據(jù)傳輸成功;客戶端發(fā)送QUIT命令,并等待服務器響應。需求分析 設計目的FTP早已應用在網(wǎng)絡的各個方面,比如我們在訪問網(wǎng)絡上的資源時,經(jīng)常會遇到需要連接FTP服務器來下載,或者你制作了一個網(wǎng)站,想要將其上傳至

47、服務器,讓大家能夠訪問它,這個時候就會用到FTP客戶端。雖然平時使用windows自帶的IE瀏覽器即可實現(xiàn)對FTP服務器的訪問,但是IE只是個很粗糙的FTP客戶端。IE瀏覽器在6.0以下的版本不支持PASV方式訪問服務器,而且IE瀏覽器在登錄FTP服務器的時候,無法查看返回的信息,在出錯的時候,無法找到錯誤的原因,因此在使用上很不方便。現(xiàn)在大多數(shù)的FTP客戶端軟件都是收費版的,而且以英文版居多,使用上操作很復雜,目前流行的有CoreFtp、AceFtp、FtpVoyager等,但是大多數(shù)用戶并不習慣使用這些軟件。本文所設計的FTP客戶端則適合大多數(shù)用戶使用,界面設計的很簡單,使用戶可以一目了然

48、,而且具備FTP客戶端的基本功能,可以作為下載、上傳文件的工具來使用。 完成目標本系統(tǒng)的開發(fā)要求采用C/S結構,選用所熟悉的開發(fā)工具及開發(fā)環(huán)境進行本系統(tǒng)的設計與開發(fā)。設計開發(fā)一個多功能FTP軟件,本設計要求實現(xiàn)部分功能站點的連接、文件的上傳與下載、文件的重命名、及站點連接功能;能實現(xiàn)站點的添加與管理;能實現(xiàn)相關個人的設置保存(比如站點名及用戶登錄口令等)。 本畢業(yè)設計要求提供能實現(xiàn)文件傳輸及站點連接等功能的軟件,要求軟件具有操作簡便、界面友好等特性;形成一個真正實用的、功能完善的FTP軟件。 功能需求用戶需求分析 主要實現(xiàn)一個FTP客戶端的圖形化用戶界面,該界面簡潔,直觀,友好,通過該界面可以

49、保證實現(xiàn)文件的傳輸和存儲。通過輸入服務器的地址、用戶名和密碼之后可以實現(xiàn)對FTP主機的遠程登錄功能。登錄成功后可以瀏覽服務器下的文件列表信息,可以實現(xiàn)本地文件的上傳的功能,可以對FTP主機文件進行下載、上傳等相關文件的操作。功能需求分析具體的功能需求分析分為以下幾點:1.連接登陸的需求:可以通過用戶提供的一些信息來實現(xiàn)登陸,輸入Ip地址、用戶名和密碼端口號等一些信息來連接所選擇的服務器,點擊相應的按鈕進行連接,如果連接成功則提示連接成功的信息,如果連接失敗,則提示連接失敗的信息。2.瀏覽文件的需求:登陸成功后,可以查看服務器上的一些相關的信息,包含文件的目錄、文件的名稱和文件的大小、文件的修改

50、日期等等一些信息,還可以改變當前文件的目錄。3.實現(xiàn)文件的上傳與下載的功能的需求:該需求是與服務器連接成功后,可以實現(xiàn)從服務器上面下載文件到本地指定的目錄下,同時也可以將本地的文件上傳到服務器上面指定的目錄下面。4.可以顯示當前狀態(tài)的功能的需求:在選定好文件進行下載和上傳時可以查看當前的狀態(tài)是否上傳或者下載成功,還可以顯示當前所進行的是什么操作,并且可以看到該操作是否成功。5.可以選擇保存路徑的功能的需求:能夠選擇要下載或者上傳的文件,并且能夠選擇下載的文件保存在本地的路徑,也可以選擇要上傳的文件保存到服務器的路徑。性能需求整個系統(tǒng)操作應當簡便,界面友好,運行穩(wěn)定,執(zhí)行速度快。系統(tǒng)本身運行對計

51、算機硬件平臺和操作平臺要求適中。 環(huán)境需求操作系統(tǒng):Windows 系統(tǒng)網(wǎng)絡服務器:FTP 開發(fā)平臺:QT4 界面設計需求為了使用戶能夠方便的使用FTP客戶端,在設計中我將數(shù)據(jù)輸入和信息顯示整合在一個頁面中,全部客戶端僅包含一個主要的窗口,窗口中分別有以下五個界面: 1數(shù)據(jù)輸入界面:用來讓用戶輸入服務器地址,用戶名,口令,端口號等一些信息。 2服務器文件信息顯示界面:主要用來顯示服務器下存儲的文件,方便用戶清楚的了解服務器中存儲了哪些文件,并且方便用戶選擇需要的文件進行下載操作。 3本地文件信息顯示界面:主要用來顯示本地下存儲的文件,方便用戶清楚的了解本地中存儲了哪些文件,還可以切換目錄,并且

52、方便用戶進行選擇要上傳的文件。4上下載隊列顯示界面:顯示正在下載或上傳的文件,并且可以選擇將文件上傳或者下載到哪個目錄下。5信息顯示界面:顯示當前連接信息和上傳下載是否成功信息,顯示當前進行的操作是否成功。軟件總體分析與設計 系統(tǒng)模塊設計上傳和下載的功能主要就是完成對文件的傳輸,是整個系統(tǒng)最核心的部分。而在Qt中,QFTP類為我們實現(xiàn)了FTP協(xié)議的客戶端所需要的功能,這樣就節(jié)約了大量的開發(fā)時間。本設計將FTP客戶端分為FTP客戶端的圖形界面模塊、登錄模塊、服務器瀏覽模塊、本地瀏覽模塊,上傳模塊、下載模塊和信息提示模塊七個模塊,具體如圖4-1所示。FTP客戶端界面模塊FTP客戶端界面模塊信息提示

53、模塊信息提示模塊上傳模塊下載模塊本地目錄瀏覽模塊服務器目錄瀏覽模塊登錄模塊上傳模塊下載模塊本地目錄瀏覽模塊服務器目錄瀏覽模塊登錄模塊圖4-1 系統(tǒng)模塊圖界面模塊:該模塊是按照用戶的需求完成FTP客戶端的基本界面的設計,界面包括連接服務器的界面,還有可以瀏覽本地文件目錄和服務器端文件的目錄,還可以顯示相關操作的提示信息的界面,該模塊主要完成FTP客戶端的操作界面簡潔、直觀。登錄模塊:該模塊主要實現(xiàn)的是可以通過用戶提供的一些信息來實現(xiàn)登錄服務器的功能,用戶可以通過輸入Ip地址、用戶名和密碼端口號等信息來連接所選擇的服務器,如果連接成功則提示連接成功的信息,如果連接失敗,則提示連接失敗的信息。服務器

54、端目錄瀏覽模塊:該模塊主要完成的是登陸成功后,可以查看服務器上的文件的一些相關的信息,包含文件的目錄、文件的名稱和文件的大小、文件的修改日期等等一些信息,還可以改變當前文件的目錄。該模塊可以使用戶很方便的進行文件的下載操作。本地目錄瀏覽模塊:該模塊主要完成的是使用戶可以瀏覽本地目錄文件的一些信息,并且可以切換到任何目錄,可以查看文件的名稱,文件的大小,文件的修改日期,文件的類型等信息。該模塊主要是可以方便用戶進行文件的上傳操作。下載傳模塊:該模塊是在連接用戶指定的 FTP 服務器后實現(xiàn)的,獲取服務器目錄下的文件列表,當用戶選擇項目為文件時,點擊下載就可以下載用戶所需要的文件。依靠 FTP 協(xié)議

55、的支持,用戶下載的文件沒有類型和大小限制,即用戶可已選擇任何自己想要下載的文件,通過 FTP 客戶端進行下載。上傳模塊:用戶可以自行選擇本機上存儲的文件,上傳至 FTP 服務器。在用戶選擇存儲在服務器的位置后,點擊上傳,選擇所需要上傳的文件,即可將文件上傳至服務器。信息提示模塊:該模塊可以提示用戶進行操作的任何信息,從該模塊中可以看到用戶的操作是否成功??梢蕴崾具B接服務器是否成功,進行上傳下載的操作是否成功,還可以看到當前所進行的是什么操作,當前所進行的操作是否成功。 詳細設計客戶端連接流程圖運行客戶端后,首先是連接服務器,需要輸入服務器 IP 地址及用戶名和密碼,點擊連接按鈕后開始連接服務器

56、,下圖為客戶端連接流程圖。圖4-2 客戶端連接流程圖連接的結果有兩種,即圖中顯示的連接成功和連接失敗,在信息顯示模塊中會顯示相應的成功或者失敗的信息。上傳子模塊流程圖當用戶點擊上傳按鈕后,用戶可以選擇需要上傳到服務器段的文件,并指定要進行上傳到服務器端的位置,然后將本機上的文件上傳至FTP服務器,下圖為上傳子模塊流程圖。 圖4-3上傳子模塊流程圖上傳的結果有兩種可能,一種是上傳失敗,另一種是上傳成功,失敗時會有相關的提示,提示用戶上傳失敗,原因可能是權限問題,如果文件成功的上傳,則會有信息提示上傳成功。下載子模塊流程圖當用戶在服務器文件列表中選擇想要下載的文件后,選擇需要下載文件在本機上的存儲

57、位置,將服務器上的文件下載至本機,下圖為下載子模塊流程圖。圖4-4下載子模塊流程圖下載的結果也有兩種,一種是下載失敗,另一種是下載成功,在信息顯示框中也會顯示相應的信息。 系統(tǒng)設計與程序的實現(xiàn)界面實現(xiàn)部分在設計登錄界面時我單獨定義了一個類。我所用的類名為conDialog,設計該界面時我主要用到的方法是Qlabel,QLineEdit,QPushButton這幾個方法。最終的界面如圖4-5所示:圖4-5 系統(tǒng)登錄界面接下來就是進行主界面的設計,主界面設計時主要用到的方法是QSplitter方法來實現(xiàn)的分割窗口。QSplitter就是一個可以包含一些其他窗口部件的部件。在切分窗口QSplitte

58、r中的這些窗口部件會通過切分條Splitter handle而分割開來。用戶可以通過拖動這些分割條改變切分條中子窗口的大小。QSplitter中的子窗口部件將會自動按照創(chuàng)建時的順序一個挨著一個的放在一起,并且以切分窗口分割條來分割相鄰的窗口。使用QComboBox類來實現(xiàn)下拉列表框。用QVBoxLayout類和QHBoxLayout類來進行布局管理,QHBoxLayout是進行水平布局,QVBoxLayout是進行垂直布局。最終的主界面效果如圖4-6所示:圖4-6 系統(tǒng)的主界面模塊功能的實現(xiàn)1.登錄模塊為了使客戶端能夠登錄服務器,應該設置以下屬性:Server:UserName:bossPas

59、sword:bossPort:一般默認為21UserName和Password表示的是登錄這個FTP服務器所需要的用戶名和密碼,如果兩個都為空則表示的是以匿名(anonymous)的身份登錄;若都不為空,則系統(tǒng)會根據(jù)所填入的用戶名和密碼的信息來與FTP服務器建立連接。然后點擊connect按鈕來實現(xiàn)連接的功能。該模塊主要是通過定義QUrl類的對象來實現(xiàn)的,首先得獲取到服務器端的一些信息,包括地址,用戶名,密碼,端口號等一些信息,然后將這些信息通過發(fā)送信號發(fā)送給槽函數(shù),最終實現(xiàn)連接到服務器的功能。實現(xiàn)連接功能的部分代碼如下:ConDialog:connectButtonClicked() url

60、 = new QUrl(); QString host(serverEdit-text(); QString userName(userNameEdit-text(); QString port(portEdit-text(); QString password(pwdEdit-text(); QString path(rPathEdit-text(); url-setScheme(ftp); if (host.isEmpty() serverEdit-setFocus(); return; if (port.isEmpty() port = 21; if (anonymityCheck-is

溫馨提示

  • 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

提交評論