版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、FTP是Internet上最早也是最廣的應(yīng)用,直到今天它仍是最重要和最基本的應(yīng)用之一。用FTP將信息下載到本地是一件十分普遍的事。也隨之出現(xiàn)了許多下載軟件。盡管遠程登錄(Telnet)提供了訪問遠程文件的極好方法,但怎么也比不上使用自己計算機中的文件方便。如果用戶想使用其它計算機上的文件,最理想的方法就是把它COPY到自己的計算機中,以便在本地計算機上操作。FTP正是完成這項工作的工具,你可以在任意一個經(jīng)過文件傳輸協(xié)議(FTP)訪問的公共有效的聯(lián)機數(shù)據(jù)庫或文檔中找到你想要的任何東西。FTP是Internet上用來傳送文件的協(xié)議。它是為了我們能夠在Internet上互相傳送文件而制定的文件傳送標
2、準,規(guī)定了Internet上文件如何傳送。通過FTP協(xié)議,我們就可以跟Internet上的FTP服務(wù)器進行文件的上傳或下載。本文以實現(xiàn)一個簡單易用的FTP客戶端為目標,通過分析FTP協(xié)議的基本工作原理和FTP的數(shù)據(jù)傳輸原理,研究如何使用Java工具對FTP客戶端進行設(shè)計,選擇Java類庫中的ftpclient類來實現(xiàn)FTP客戶端程序的上傳下載等主要功能。關(guān)鍵字:Ftp客戶端、FTP協(xié)議、工作原理、上傳下載 目錄 1.4 一個完善的系統(tǒng)項目分析00123334475556666667772829引 言目前,F(xiàn)TP服務(wù)已經(jīng)是網(wǎng)絡(luò)上廣泛使用的一種服務(wù)了,它是建立在FTP協(xié)議上的用于網(wǎng)絡(luò)環(huán)境下進行文件
3、傳輸?shù)囊环N文件傳輸系統(tǒng),幾乎可以傳輸各種類型的文件,如文本文件,聲音文件,圖像文件等。一個文件傳輸系統(tǒng)有服務(wù)器端程序和客戶端程序共同組成的,客戶端程序提供用戶操作的界面并完成文件的上傳和下載。在網(wǎng)絡(luò)應(yīng)用中,F(xiàn)TP有著非常重要的地位,在Internet中一個十分重要的就是資源,而各種各樣的資源大多數(shù)都是放在FTP服務(wù)器中的,為了獲得這些資源,我們必須使用FTP客戶端軟件。目前流行的有cuteFTP,WS_FTP,ByteCatcher,F(xiàn)TP Voyage等。為了方便用戶的使用,本文將介紹一種基于Java的FTP客戶端程序的設(shè)計與實現(xiàn)。 本文所設(shè)計的FTP客戶端,利用已有網(wǎng)絡(luò)環(huán)境設(shè)計并實現(xiàn)簡單應(yīng)
4、用層協(xié)議,掌握TCP/IP 網(wǎng)絡(luò)應(yīng)用程序基本的設(shè)計方法和實現(xiàn)技巧,可以根據(jù)服務(wù)器IP、用戶名、密碼和端口號登錄指定的FTP服務(wù)器,可以查看服務(wù)器內(nèi)容列表,下載選定的文件,重命名或刪除指定的文件/文件夾,也可以把本地文件上傳到服務(wù)器上。適合大多數(shù)用戶使用,界面設(shè)計的很簡單,使用戶可以一目了然,而且具備FTP客戶端的基本功能,可以作為下載、上傳文件的工具來使用。1、課題描述文件傳送是各種計算機網(wǎng)絡(luò)都實現(xiàn)的基本功能,文件傳送協(xié)議是一種最基本的應(yīng)用層協(xié)議按照客戶/服務(wù)器的模式進行工作,提供交互式的訪問,是Internet使用最廣泛的協(xié)議之一。 現(xiàn)如今FTP早已應(yīng)用在網(wǎng)絡(luò)的各個方面,比如我們在訪問網(wǎng)絡(luò)上
5、的資源時,經(jīng)常會遇到需要連接FTP服務(wù)器來下載,或者你制作了一個網(wǎng)站,想要將其上傳至服務(wù)器,讓大家能夠訪問它,這個時候就會用到FTP客戶端。雖然平時使用windows自帶的IE瀏覽器即可實現(xiàn)對FTP服務(wù)器的訪問,但是IE只是個很粗糙的FTP客戶端。IE瀏覽器在6.0以下的版本不支持PASV方式訪問服務(wù)器,而且IE瀏覽器在登錄FTP服務(wù)器的時候,無法查看返回的信息,在出錯的時候,無法找到錯誤的原因,因此在使用上很不方便?,F(xiàn)在大多數(shù)的FTP客戶端軟件都是收費版的,而且以英文版居多,使用上操作很復(fù)雜,目前流行的有CoreFtp、AceFtp、FtpVoyager等,但是大多數(shù)用戶并不習(xí)慣使用這些軟件
6、。 本文首先分析了FTP協(xié)議,F(xiàn)TP的工作原理等,然后介紹了如何使用Java工具來設(shè)計和實現(xiàn)一個簡單的FTP客戶端。使用本FTP客戶端,可以使用戶輕松的下載、上傳網(wǎng)絡(luò)資源。 用戶對象是需要對文件傳輸要求使用簡便,希望可操作性強的廣大網(wǎng)上用戶。2、程序運行環(huán)境與系統(tǒng)結(jié)構(gòu)此次課設(shè)的“FTP客戶端”是基于Java編程語言在Eclipse下開發(fā)的文件傳輸軟件,正常使用該軟件您務(wù)必保證您的電腦配置滿足如下要求:1) 運行平臺(硬件環(huán)境):Windows 7 旗艦版2)系統(tǒng)開發(fā)平臺 :Eclipse3)系統(tǒng)開發(fā)語言:Java5)有相對應(yīng)的FTP服務(wù)器或者您有更加適合的運行環(huán)境會更好!本次課設(shè)的FTP客戶端
7、是在Windows 7 (旗艦版)+ Eclipse + jdk1.6.0_18下使用Java編程語言進行開發(fā),并與一個FTP服務(wù)器QuickEasyFTPServer一起使用的。3、FTP客戶端特點FTP是Internet上最早也是最廣的應(yīng)用,直到今天它仍是最重要和最基本的應(yīng)用之一。用FTP將信息下載到本地是一件十分普遍的事。也隨之出現(xiàn)了許多下載軟件。盡管遠程登錄(Telnet)提供了訪問遠程文件的極好方法,但怎么也比不上使用自己計算機中的文件方便。如果用戶想使用其它計算機上的文件,最理想的方法就是把它COPY到自己的計算機中,以便在本地計算機上操作。FTP正是完成這項工作的工具,你可以在任
8、意一個經(jīng)過文件傳輸協(xié)議(FTP)訪問的公共有效的聯(lián)機數(shù)據(jù)庫或文檔中找到你想要的任何東西。傳統(tǒng)的數(shù)據(jù)庫應(yīng)用系統(tǒng)采用的是客戶機/服務(wù)器(Client/Server)模式,有高度的交互性,高效的用戶界面等優(yōu)點.且采用Java 編程語言進行開發(fā)。Java 編程語言的主要特性是個簡單、面向?qū)ο蟆⒎植际浇忉屝?、健壯、安全與系統(tǒng)無關(guān)、可移植、高性能、多線程和動態(tài)的語言。 第1章 項目分析文件傳輸協(xié)議(FTP)作為網(wǎng)絡(luò)共享文件的傳輸協(xié)議,在網(wǎng)絡(luò)應(yīng)用軟件中具有廣泛的應(yīng)用。FTP的目標是提高文件的共享性和可靠高效地傳送數(shù)據(jù)。在傳輸文件時,F(xiàn)TP 客戶端程序先與服務(wù)器建立連接,然后向服務(wù)器發(fā)送命令。服務(wù)器收到命令后
9、給予響應(yīng),并執(zhí)行命令。FTP 協(xié)議與操作系統(tǒng)無關(guān),任何操作系統(tǒng)上的程序只要符合 FTP 協(xié)議,就可以相互傳輸數(shù)據(jù)。相比其他協(xié)議,如 HTTP 協(xié)議,F(xiàn)TP 協(xié)議要復(fù)雜一些。與一般的 C/S 應(yīng)用不同點在于一般的C/S 應(yīng)用程序一般只會建立一個 Socket 連接,這個連接同時處理服務(wù)器端和客戶端的連接命令和數(shù)據(jù)傳輸。而FTP協(xié)議中將命令與數(shù)據(jù)分開傳送的方法提高了效率。 問題描述編寫一個FTP客戶端軟件,該系統(tǒng)能夠執(zhí)行FTP的常用命令,能夠完成FTP的基本操作,支持FTP的主要特性。要求采用圖形用戶界面,不得使用現(xiàn)成的FTP組件。即:1.實現(xiàn)一個圖形用戶界面的FTP客戶端,保證文件的安全傳輸和存
10、儲。2.通過輸入服務(wù)器地址、用戶名和密碼、可以實現(xiàn)FTP主機的登錄。3.提供本地文件的上傳功能,可對FTP主機文件進行下載、上傳、刪除、重命名等文件操作。 FTP協(xié)議分析1.2.1 FTP的工作原理 FTP(FileTransferProtocol),是文件傳輸協(xié)議的簡稱。用于Internet上的控制文件的雙向傳輸。同時,它也是一個應(yīng)用程序。用戶可以通過它把自己機器與世界各地所有運行FTP協(xié)議的服務(wù)器相連,訪問服務(wù)器上的資源和信息。FTP協(xié)議在TCP/IP協(xié)議棧中的位置如表1: 表1 TCP/IP協(xié)議棧HTTP FTP TELN SMTP DNS TFTP NMP 應(yīng)用層 TCP UDP 傳輸
11、層 IP 互聯(lián)網(wǎng)絡(luò)層 X25 ISDN LAN WLAN FDDI ATM 網(wǎng)絡(luò)接口層當啟動FTP從遠程計算機拷貝文件時,事實上啟動了兩個程序:一個本地機器上的FTP客戶端程序,它向FTP服務(wù)器提出拷貝文件的請求。另一個是啟動在遠程計算機的上的FTP服務(wù)器程序,它響應(yīng)請求把你指定的文件傳送到你的計算機中。FTP采 用“客戶端/服務(wù)器”(C/S)方式,用戶要在自己的本地計算機上安裝FTP客戶端程序。 從根本上說,F(xiàn)TP協(xié)議就是在網(wǎng)絡(luò)中各種不同的計算機之間按照TCP/IP協(xié)議來傳輸文件。FTP協(xié)議采用客戶端/服務(wù)器(Client/Sever)模式,由FTP客戶端程序和FTP服務(wù)器端程序組成。使用時
12、,先啟動FTP客戶端程序與遠程主機建立連接,然后向遠程主機發(fā)出傳輸命令,遠程主機在收到命令后就給予響應(yīng),并執(zhí)行正確的命令。但是FTP有一個根本的限制,那就是,如果用戶在某個主機上沒有注冊獲得授權(quán),即沒有用戶名和口令,就不能與該主機進行文件傳輸。但匿名FTP服務(wù)器除外,它能夠使用戶與遠程主機建立連接并以匿名身份從遠程主機上拷貝文件,而不必是該遠程主機的注冊用戶。用戶使用特殊的用戶名“Anonymous”或“guest”就可有限制地訪問遠程主機上公開的文件?,F(xiàn)在許多系統(tǒng)要求用戶將Emai1地址作為口令,以便更好地對訪問者進行跟綜。出于安全的目的,大部分匿名FTP主機一般只允許遠程用戶下載文件,而不
13、允許上載文件。也就是說,用戶只能從匿名FTP主機拷貝其需要的文件而不能把文件拷貝到匿名FTP主機。另外,匿名FTP主機還采用了其他一些保護措施以保護自己的文件不至于被用戶修改和刪除,并防止計算機病毒的侵入。匿名FTP一直是Internet上獲取信息資源的最主要方式,在Internet成千上萬的匿名FTP主機中存儲著無以計數(shù)的文件,這些文件包含了各種各樣的信息、數(shù)據(jù)和軟件。人們只要知道特定信息資源的主機地址,就可以用匿名FTP登陸。 1.2.2 FTP工作模式FTP采用C/S(客戶端/服務(wù)器)模式進行通信,但與其他的C/S模式網(wǎng)絡(luò)通信協(xié)議又有一個很大的區(qū)別。通常在進行HTTP通信或是TELNET
14、通信的時候,只需要一個端口進行通信。即客戶端只需要連接一個端口進行數(shù)據(jù)通信。如TELNET的默認端口是23,用戶從頭到尾都只需使用這個端口。但是FTP通信除了有一個默認端口21之外,還需要其他的端口。其中默認端口(21)主要進行控制連接,進行命令協(xié)議和服務(wù)器端的響應(yīng)碼的傳輸;另外一個非標準端口主要進行數(shù)據(jù)傳遞,如文件的上載、下載等。至于非標準端口的產(chǎn)生則要根據(jù)用戶選擇的連接模式而定:如果客戶選擇的是主動模式(PORT),則需要用戶端提供給服務(wù)器一個IP地址和一個非標準端口;而如果用戶采用被動模式(PASV),則服務(wù)器端需要提供給客戶端一個IP地址和一個非標準端口。而在此次課設(shè)中我采用的就是主動
15、模式。下表是幾個著名的TCP端口號: 表2 TCP端口號TCP端口號 關(guān)鍵字 描述 20 FTP-DATA文件傳輸協(xié)議數(shù)據(jù) 21 FTP文件傳輸協(xié)議控制 23 TELENET 遠程登錄協(xié)議 25 SMTP 簡單郵件傳輸協(xié)議 53 DOMAIN 域名服務(wù)器 80 HTTP超文本傳輸協(xié)議 110 POP3 郵局協(xié)議 119 NNTP 新聞傳送協(xié)議FTP中字節(jié)大小有兩個:邏輯字節(jié)大小和用于傳輸?shù)淖止?jié)大小。后者通常是8位 ,而前者可不一定是多少了。傳輸字節(jié)不必等于邏輯字節(jié)大小,也不必對數(shù)據(jù)結(jié)構(gòu)進行解釋??刂七B接是建立在USER-PIT和SERVER-PI之間用于交換命令與應(yīng)答的通信鏈路。數(shù)據(jù)連接是傳輸
16、數(shù)據(jù)的全雙工連接,傳輸數(shù)據(jù)可以發(fā)生在服務(wù)器DTP和用戶DTP之間也可以發(fā)生在兩個服務(wù)器DTP之間,F(xiàn)TP可以傳輸非連續(xù)的文件,這些文件的一部分稱為頁。服務(wù)器DTP代表一種傳輸過程,它通常處于“主動”狀態(tài),它和偵聽端口建立數(shù)據(jù)連接,它還可以為傳輸和存儲設(shè)置參數(shù),并根據(jù)PI的指令傳輸數(shù)據(jù)。當然,DTP也可以轉(zhuǎn)入“被動”狀態(tài)。服務(wù)器FTP進程,它是和用戶FTP進程一起工作的,它由PI和DTP組成。至于用戶FTP進程則是由PI,DTP和用戶接口組成的。具體工作模式如圖1所示:FTP請求用戶用戶接口服務(wù)器aFTP響應(yīng)用戶a1文件傳輸系統(tǒng)文件傳輸系統(tǒng)用戶b2數(shù)據(jù)連接服務(wù)器 b 服務(wù)器-FTP用戶FTP 圖
17、1FTP工作模式圖上圖中用戶PI開始控制連接,控制連接與Telnet協(xié)議很象。在開始階段,標準FTP命令由用戶PI產(chǎn)生并通過控制連接傳送到服務(wù)器進程。服務(wù)器PI向用戶PI返回標準應(yīng)答。FTP命令指定數(shù)據(jù)連接參數(shù)和文件系統(tǒng)操作。用戶DTP在特定數(shù)據(jù)端口偵聽,服務(wù)器開始數(shù)據(jù)連接并以指定的參數(shù)開始數(shù)據(jù)傳輸。數(shù)據(jù)端口不必在開始FTP命令的機器上,但用戶或用戶FTP進程必須確定它在指定的數(shù)據(jù)端口上偵聽.這個數(shù)據(jù)連接是全雙工的。1.FTP傳輸模式 FTP協(xié)議的任務(wù)是從一臺計算機將文件傳送到另一臺計算機,它與這兩臺計算機所處的位置、聯(lián)接的方式、甚至是是否使用相同的操作系統(tǒng)無關(guān)。假設(shè)兩臺計算機通過ftp協(xié)議對
18、話,并且能訪問Internet,你可以用ftp命令來傳輸文件。每種操作系統(tǒng)使用上有某一些細微差別,但是每種協(xié)議基本的命令結(jié)構(gòu)是相同的。FTP的傳輸有兩種方式:ASCII傳輸模式和二進制數(shù)據(jù)傳輸模式。 ASCII傳輸方式 假定用戶正在拷貝的文件包含的簡單ASCII碼文本,如果在遠程機器上運行的不是UNIX,當文件傳輸時ftp通常會自動地調(diào)整文件的內(nèi)容以便于把文件解釋成另外那臺計算機存儲文本文件的格式。但是常常有這樣的情況,用戶正在傳輸?shù)奈募牟皇俏谋疚募鼈兛赡苁浅绦?,?shù)據(jù)庫,字處理文件或者壓縮文件(盡管字處理文件包含的大部分是文本,其中也包含有指示頁尺寸,字庫等信息的非打印
19、字符)。在拷貝任何非文本文件之前,用binary命令告訴ftp逐字拷貝,不要對這些文件進行處理。1. 在二進制傳輸中,保存文件的位序,以便原始和拷貝的是逐位一一對應(yīng)的。即使目的地機器上包含位序列的文件是沒意義的。例如,macintosh以二進制方式傳送可執(zhí)行文件到Windows系統(tǒng),在對方系統(tǒng)上,此文件不能執(zhí)行。如果你在ASCII方式下傳輸二進制文件,即使不需要也仍會轉(zhuǎn)譯。這會使傳輸稍微變慢,也會損壞數(shù)據(jù),使文件變得不能用。如果你知道這兩臺機器是同樣的,則二進制方式對文本文件和數(shù)據(jù)文件都是有效的。2015-3-12至2015-3-21 : 需求分析階段2015-3-21至2015-3-22:設(shè)
20、計界面階段2015-3-22至2015-3-26: 編碼階段2015-3-26至2015-4-1: 測試階段2015-3-29至2015-4-2: 文檔編寫階段一個完整系統(tǒng)項目分析(1)項目任務(wù)的主要內(nèi)容和要求:遵循FTP協(xié)議,實現(xiàn)一個FTP的客戶端程序,根據(jù)服務(wù)器IP、用戶名、密碼和端口號登錄指定的FTP服務(wù)器,可以查看服務(wù)器內(nèi)容列表,下載選定的文件,重命名或刪除指定的文件/文件夾,也可以把本地文件上傳到服務(wù)器上。(2)項目設(shè)計(研究)思路:FTP客戶端可以給服務(wù)器發(fā)出命令來下載文件,上載文件,創(chuàng)建或改變服務(wù)器上的目錄。FTP是一個8位的客戶端-服務(wù)器協(xié)議,能操作任何類型的文件而不需要進一步
21、處理。但是,F(xiàn)TP有著極高的延時,這意味著,從開始請求到第一次接收需求數(shù)據(jù)之間的時間會非常長,并且不時的必需執(zhí)行一些冗長的登錄進程。FTP服務(wù)一般運行在20和21兩個端口。端口20用于在客戶端和服務(wù)器之間傳輸數(shù)據(jù)流,而端口21用于傳輸控制流,并且是命令通向ftp服務(wù)器的進口。當數(shù)據(jù)通過數(shù)據(jù)流傳輸時,控制流處于空閑狀態(tài)。而當控制流空閑很長時間后,客戶端的防火墻會將其會話置為超時,這樣當大量數(shù)據(jù)通過防火墻時,會產(chǎn)生一些問題。根據(jù)要求分析,對其所要實現(xiàn)的功能進行劃分實現(xiàn),首先要完成主機與服務(wù)器之間的連接與關(guān)閉操作。其次主要完成文件的顯示、新建文件、刪除文件等。然后要完成主機與服務(wù)器連接成功以后文件的
22、上傳與下載。最后要是保存一些登錄信息和一些簡單的配置信息。(3)具體成果形式和要求FTP客戶端主要目標是:促進文件的共享(計算機程序或數(shù)據(jù));鼓勵間接或者隱式的使用遠程計算機;向用戶屏蔽不同主機中各種文件存儲系統(tǒng)的細節(jié);可靠和高效的傳輸數(shù)據(jù)。要求根據(jù)賬號和密碼登錄指定的FTP服務(wù)器,可以查看服務(wù)器內(nèi)容列表,下載選定的文件,重命名或刪除指定的文件/文件夾,也可以把本地文件上傳到服務(wù)器上。第2章 系統(tǒng)分析與設(shè)計系統(tǒng)分析 FTP客戶端作為用戶連接FTP服務(wù)器的工具,需要具備一些基本功能模塊,如連接、上傳、下載等,其中最主要的三大功能模塊如下:1、下載功能模塊:連接用戶指定的FTP服務(wù)器,獲取服務(wù)器目
23、錄下的文件列表,當用戶選擇項目為文件時,點擊下載可以下載用戶所需要的文件。選定文件后提示用戶將文件存儲在何處,用戶選擇存儲區(qū)后開始下載任務(wù)。依靠FTP協(xié)議的支持,用戶下載的文件沒有類型和大小限制,即用戶可已選擇任何自己想要下載的文件,通過FTP客戶端進行下載。2、上傳功能模塊:用戶可以自行選擇本機上存儲的文件,上傳至FTP服務(wù)器。在用戶選擇存儲在服務(wù)器的位置后,點擊上傳,選擇所需要上傳的文件,即可將文件上傳至服務(wù)器。 3、連接功能模塊:將用戶本機與指定的IP地址連接,驗證用戶名和密碼,在FTP服務(wù)器上進行注冊。有了這三個基本的功能模塊,客戶端的基本應(yīng)用功能即可實現(xiàn)。2.1.1 設(shè)計工具程序設(shè)計
24、中用到的主要語言就是Java,Java是SUN公司開發(fā)的一種面向?qū)ο蟮男乱淮W(wǎng)絡(luò)編程語言,它可以在各種不同的機器、操作系統(tǒng)的網(wǎng)絡(luò)環(huán)境中進行開發(fā),具有解釋型語言(如Basic語言)和編譯型語言(如C語言)的特性。Java摒棄了C+中各種弊大于利的功能和許多很少用到的功能,用Java開發(fā)的程序可以在網(wǎng)絡(luò)上傳輸,并運行于任何客戶機上。使用Java語言可以方便的設(shè)計出網(wǎng)絡(luò)應(yīng)用類的程序,而且Java的移植性很好,在 、其應(yīng)用程序在各種機器上都能無差別的執(zhí)行為了使FTP客戶端能適應(yīng)大多數(shù)平臺下的使用,我選擇使用Java語言在Eclipse下來實現(xiàn)。2.1.2 系統(tǒng)模型設(shè)計控制進程數(shù)據(jù)傳送進程;用戶接口命令
25、與應(yīng)答控制連接數(shù)據(jù)連接文件傳輸數(shù)據(jù)傳送進程控制進程服務(wù)器客戶端圖2.2 FTP的基本模型2.1.3 系統(tǒng)工作流程設(shè)計 客戶端登錄登錄驗證操作內(nèi)容列表查看文件列表連接成功至服務(wù)器服務(wù)器端上傳文件重命名文件上翻文件列表刪除文件下翻文件列表下載文件文件管理連接失敗退出用戶輸入服務(wù)器地址及用戶名和密碼2.1.4客戶端連接流程圖 連接服務(wù)器發(fā)送用戶名及是否連接成功密碼至服務(wù)器在信息顯示模塊顯示連接成功是獲取服務(wù)器文件列表 否在信息顯示模塊顯示連接失敗刷新服務(wù)器文件顯示文件列表圖1 客戶端連接流程圖連接的結(jié)果有兩種,即圖中顯示的連接失敗和連接成功。2.1.5上傳子模塊流程圖 用戶可以選擇需要上傳的文件,并
26、指定上傳位置,當用戶點擊上傳后,將本機上的文件上傳至FTP服務(wù)器。下圖為上傳子模塊流程圖。選擇要上傳文件,點擊右鍵選擇上傳彈出文件選擇對話框獲取用戶選擇的文件名新建一個上傳任務(wù)登錄到FTP服務(wù)器目標目錄下上傳是否成功彈出對話框顯示上傳成功是更新服務(wù)器文件列表 否 重新獲取服 務(wù)器文件列表彈出對話框顯示上傳失敗 清除線程 圖4 上傳模塊流程圖上傳的結(jié)果有兩種,上傳失敗和成功,失敗時會提示用戶上傳失敗,原因可能是權(quán)限,如果成功上傳,則提示上傳成功。2.1.6下載子模塊流程圖當用戶在服務(wù)器文件列表中選擇想要下載的文件后,選擇需要下載文件在本機上的存儲位置,將服務(wù)器上的文件下載至本機。下圖為上傳子模塊
27、流程圖。選擇要下載的文件單擊右鍵選擇下載獲取文件信息選擇文件在本機存儲位置將信息傳送至任務(wù)新建下載任務(wù)登錄到FTP服務(wù)器目標目錄下下載是否成功彈出對話框顯示下載成功是更新服務(wù)器文件列表 否 重新獲取服務(wù)器文件列表彈出對話框顯示下載失敗清除線程圖5下載模塊流程圖2.2 系統(tǒng)設(shè)計在軟件開發(fā)時期,設(shè)計階段是富有活力和最需要發(fā)揮創(chuàng)造力的階段。設(shè)計的目標,是細化解決方案的可視化設(shè)計模式,確保設(shè)計模型終能平滑的過度到程序代碼。設(shè)計的任務(wù)就是把分析階段產(chǎn)生分析模型轉(zhuǎn)換為用適當手段表示的軟件設(shè)計模型。數(shù)據(jù)輸入模塊詳細設(shè)計該界面用來記錄用來輸入服務(wù)器的站點,用戶名和密碼信息,然后將信息發(fā)送到服務(wù)器進行驗證,利用
28、Jtextfiled構(gòu)件來實現(xiàn)??蛻舳艘还灿?個文本輸入框,分別為服務(wù)器地址輸入框url,用戶名輸入框username,密碼輸入框password 和端口號port。在程序運行時,用戶在輸入框url中輸入的FTP服務(wù)器站點、用戶在輸入框username中輸入的用戶名、用戶在輸入框password 中輸入密碼,用戶在端口號輸入框port中輸入端口號。利用getText()函數(shù)獲取輸入框中的數(shù)據(jù)。JTextField類的定義:private JTextField url = new JTextField();/FTP服務(wù)器地址private JTextField port = new JTextF
29、ield();/FTP服務(wù)器端口private JTextField username = new JTextField();/用戶名private JTextField password = new JTextField();/密碼文件信息顯示界面詳細設(shè)計該界面的作用是是顯示服務(wù)器文件列表,利用Jscrollpane構(gòu)件來實現(xiàn)。在客戶端主界面創(chuàng)建一個Jscrollpane,命名為fileScrollPane,并置于主界面中間。JScrollPane類的定義:JScrollPane fileScrollPane;fileScrollPane = new JScrollPane(fileList
30、,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);fileScrollPane.setPreferredSize(new Dimension(300,400);操作模塊詳細設(shè)計操作的實現(xiàn)使用JMenuItem和JPopupMenu構(gòu)件實現(xiàn),客戶端共有刷新、刪除、上傳、下載、上一級目、重命名、顯示日志信息等7個操作,分別命名為refresh 、delete 、 download 、 upload 、rename、upDir和showLog。JMenuItem類的定義:priv
31、ate JPopupMenu popup = new JPopupMenu();/建立一個彈出式菜單private JMenuItem refresh = new JMenuItem(刷新); /右鍵彈出菜單private JMenuItem delete = new JMenuItem(刪除); private JMenuItem download = new JMenuItem(下載); private JMenuItem upload = new JMenuItem(上傳); private JMenuItem rename = new JMenuItem(重命名);private JM
32、enuItem upDir = new JMenuItem(上級目錄);private JMenuItem showLog = new JMenuItem(顯示日志信息);每個操作都有自己的方法來實現(xiàn)各自的功能,分別如下連接: public String connect(String dir, String hostname, int port, String username,String passwd) 上傳:uploadFile(String localFile, String targetFileName)下載:downloadFile(String srcFileName, Stri
33、ng targetFileName)刪除:deleteFile(String fileName)斷開:close() 上一級目錄:upDir()刷新:update()重命名: renameFile(String oldName, String newName) 2.3 具體功能模塊實現(xiàn)使用SUN公司提供的FTP客戶端類庫。主要包括4個類:編寫FtpBean類實現(xiàn)業(yè)務(wù)邏輯,包含一個FtpClient類的對象ftpClient。包含的方法如下:(1) 建立連接String connect(String dir, String hostname, int port, String username,
34、String passwd)使用 ftpClient = new FtpClient(hostname, port); ftpClient.login(username, passwd);(2) 獲取文件名列表List getFileNameList()使用 List fileNameList = new ArrayList();/在fileNameList中存取String類型的變量 InputStreamReader isr = null;/ InputStreamReader 是字節(jié)流通向字符流的橋梁 BufferedReader br = null;isr = new InputStr
35、eamReader(this.ftpCList(this.getDir();br = new BufferedReader(isr);獲取輸入流來得到目錄中的文件信息(3) 判斷路徑boolean isDir(String line)使用line.startsWith(d)來判斷(4) 設(shè)置路徑boolean setPath(String path)使用ftpClient.cd(path);實現(xiàn)(5) 上傳文件boolean uploadFile(String localFile, String targetFileName)使用TelnetOutputStream tos
36、 = null; RandomAccessFile sendFile = null; DataOutputStream dos = null; try File file = new File(localFile); sendFile = new RandomAccessFile(file, r); sendFile.seek(0); tos = this.ftpClient.put(targetFileName); dos = new DataOutputStream(tos); int ch = 0; while (sendFile.getFilePointer() sendFile.le
37、ngth() ch = sendFile.read(); dos.write(ch); 獲取文件輸出流,讀取數(shù)據(jù)并寫入文件(6) 下載文件boolean downloadFile(String srcFileName, String targetFileName)使用TelnetInputStream tis = null; RandomAccessFile getFile = null; boolean result = true; try File file = new File(targetFileName); getFile = new RandomAccessFile(file, r
38、w); getFile.seek(0); tis = this.ftpClient.get(srcFileName); DataInputStream dis = new DataInputStream(tis); int ch = 0; while (true) ch = dis.read(); if (ch 0) break;getFile.write(ch) getFile.close(); 獲取文件輸入流,讀取數(shù)據(jù)并寫入文件(7) 進入上一級文件目錄up()使用ftpClient.cdUp();實現(xiàn)(8) 進入下一級文件目錄downDir()使用上面的方法來實現(xiàn)下一級文件目錄的訪問(9
39、) 給文件重命名boolean renameFile(String oldName, String newName)使用ftpClient.rename(oldName, newName);來實現(xiàn)(10) 刪除文件deleteFile(String fileName)使用String cmd = DELE + fileName + rn; ftpClient.sendServer(cmd);來實現(xiàn)(11) 獲取當前路徑String getDir()使用return this.ftpClient.pwd();實現(xiàn)(12) 關(guān)閉連接String close()使用ftpClient.closeSe
40、rver();實現(xiàn)第3章 實現(xiàn)與測試(1) 用戶登錄初始界面:運行Ftp.java,在文件顯示框中點擊右鍵,得初始界面如下: (2)連接主機服務(wù)器成功界面:(3)服務(wù)器的用戶信息: (4)文件上傳 在窗體文件顯示處點擊鼠標右鍵,選擇上傳,按照步驟提示操作在主機中選擇一個文件(如text.txt)上傳,即可上傳文件。(5)文件下載在窗體文件顯示處選擇想要下載的文件(如text1.txt),點擊鼠標右鍵,選擇下載,并自己選擇自己希望的文件的存放路徑,并為文件命名,即可成功下載文件。命名為66.txt,下載存放于G盤Test文件夾中。在G盤中我們可以看到66.txt文件。若是沒有先選擇文件就點右鍵選
41、擇下載,則會出現(xiàn)提示如下:(6)刪除文件 步驟如下:點擊右鍵選擇刪除。點擊確定按鈕。(7)重命名步驟如下: 選擇要重命名的文件,點擊右鍵選擇重命名,在彈出的窗體中寫入新的名稱,點擊確定即可。(8) 打開日志記錄文件在文件顯示板上單擊右鍵,選擇“顯示日志信息”即可查看日志記錄第4章 系統(tǒng)其他設(shè)計補充接口設(shè)計用戶接口本系統(tǒng)以鼠標和鍵盤為用戶接口,方便用戶對在線考試系統(tǒng)的有效操作。打開系統(tǒng)的主界面,用戶輸入正確的服務(wù)器IP,用戶名,端口號和密碼就能與服務(wù)器相連接,即可以使用FTP客戶端功能;否則,將一直停留在主界面,無法登錄主機。外部接口本系統(tǒng)所用的開發(fā)工具是Eclipse,在和用戶進行數(shù)據(jù)交互的時
42、候是通過服務(wù)器。必須安裝 Windows 2000 以上版本,必須留有100MB以上的硬盤空間,計算機在PII以上運行效果更佳 ,且安裝該程序是在32位操作系統(tǒng)和JDK為版本6下運行的。內(nèi)部接口設(shè)計共同模塊,提高代碼復(fù)用程度。運行設(shè)計運行模塊組合(1)FTP客戶端的3大主要模塊在服務(wù)器啟動并與之已建立連接的時候完成所有模塊加載工作,隨時等候用戶的調(diào)用。(2)用戶可以根據(jù)自己的需要進行相應(yīng)的操作。運行控制(1)在頁面上,通過鼠標點擊觸發(fā)相應(yīng)的操作。(2)在頁面上,也可以通過Tab鍵、回車鍵等功能鍵完成某些特定的功能。4.3 補救措施定期對系統(tǒng)進行文件處理及備份。采用硬盤做備份設(shè)備,使用主機硬盤提
43、供的備份功能定期對數(shù)據(jù)進行備份。一旦系統(tǒng)遭遇到意外破壞,就不怕自己的重要文件丟失,本系統(tǒng)未提供自動恢復(fù)功能,只能由系統(tǒng)管理員手動進行恢復(fù)。4.4 系統(tǒng)維護設(shè)計定期重啟客戶端系統(tǒng);客戶端和服務(wù)器優(yōu)化,包括整理系統(tǒng)空間和性能優(yōu)化。系統(tǒng)運行時,應(yīng)該具有一定的容錯能力(如出現(xiàn)錯誤評判結(jié)果后,可以手工評判或者選擇重新評判),而且一般的非正常操作不應(yīng)該影響系統(tǒng)的正常使用。一旦系統(tǒng)崩潰或出現(xiàn)故障導(dǎo)致系統(tǒng)不能運行,在正常的工作日,應(yīng)該能夠在4個小時內(nèi)恢復(fù)系統(tǒng)正常運行,在節(jié)假日等非工作時間,應(yīng)該能夠在24小時內(nèi)恢復(fù)系統(tǒng)正常運行。周期性地把磁盤信息記錄到磁帶上去。第5章 課設(shè)總結(jié)系統(tǒng)不足與展望本FTP客戶端限于我
44、的精力、技術(shù)和時間有限,因此要改進的地方比較多,其中有許多功能模塊未能實現(xiàn),如還未能實現(xiàn)新建文件夾、多文件傳輸、鍵盤快捷鍵設(shè)置、上下級目錄翻轉(zhuǎn)和影像文件傳輸?shù)鹊?,所以整個系統(tǒng)看起來沒有實際那么復(fù)雜,未能和我所設(shè)想的那么完整。其實還可以增加更多的功能,比如文件夾的新建,文件夾排序,文件管理,傳輸?shù)姆绞降母纳坪投嗑€程傳輸?shù)鹊龋捎跁r間與能力的關(guān)系,因而無法完成。我真想能有更多的時間去探索、去研究,去完成我所能完成的所有可以想到的功能模塊。5.2 總結(jié)經(jīng)過需求分析、設(shè)計、開發(fā)、測試,本系統(tǒng)已成型,其中主要使用了Eclipse、Java等相關(guān)技術(shù)。這些技術(shù)的實現(xiàn),滿足了系統(tǒng)的需要,優(yōu)化了系統(tǒng)的性能。使
45、用模塊化設(shè)計,有助于編程人員的維護和系統(tǒng)的再次開發(fā)。在ftp客戶端中,已經(jīng)完成能夠?qū)崿F(xiàn)要求的功能,但是對于FTP客戶端實際上還存在以下不足之處,首先是代碼不簡練,造成冗余;然后是考慮問題的不足,沒有全面的站在用戶的角度上去思考問題。最后是檢測的不徹底,程序還有待改進。對于在編程中遇到的問題,就是對待問題時,往往眼高手低,沒有考慮全面。此次FTP軟件的設(shè)計與開發(fā),從其功能上講沒有任何新的功能。實現(xiàn)了FTP的基本功能。能獲取系統(tǒng)驅(qū)動器信息,能根據(jù)路徑來顯示你文件夾信息。能在軟件中對文件進行添加和刪除操作,及文件的上傳和下載操作。外觀基本上算是比較美觀。完成了基本的FTP軟件功能。FTP下載軟件開發(fā)
46、不管是在國內(nèi)外都已經(jīng)了十分成熟的技術(shù),功能都比較齊全和不錯。但是此次課程設(shè)計的對我的最大收獲是了解了JAVA開發(fā)Windows應(yīng)用程序開發(fā),對新的開發(fā)語言JAVA有了了解。對FTP工作過程也有了一定的了解。也可以給一些初學(xué)FTP客戶端軟件開發(fā)一些幫助。本來還嘗試添加美化界面、給按鈕添加圖片等等前面預(yù)想的功能,但由于自己的知識比較有限,所以只好作罷。而且設(shè)置背景還真的不太好弄,原來JFrame還有分層的,要把圖片放在最底層,還要使內(nèi)容窗格透明,這樣才能實現(xiàn)設(shè)置背景的效果,但是因為老是出錯我沒能很好的完成預(yù)想效果。但這也會讓我以后更加的努力去學(xué)好JAVA,在以后的編程中,JAVA真的個很好的編程語
47、言。這次程序設(shè)計也是一個毅力的考驗過程。有時候往往只是一個小小的錯誤,卻要花出幾小時甚至是一天的時間才可能發(fā)現(xiàn)它,所以在這個過程不能過于急躁,要把那部分的代碼挑出來一一調(diào)試,來縮小范圍,找出錯誤。所以,這次課程設(shè)計給我的收獲還是很多的,不僅鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。最重要的是,我知道了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正掌握這門技術(shù)??傊?,此次課程設(shè)計對我的Java編程語言和計算機網(wǎng)絡(luò)技術(shù)的學(xué)習(xí)可謂影響深遠、意義重大,可以說在課程設(shè)計的過程中,使我比原來更加的熟悉和認識到這
48、個技術(shù)的好處和特點。在這個過程中我主要學(xué)會堅持,還要有耐心和恒心。在這個行業(yè)中,不僅鍛煉人的思考方式,還鍛煉著人的性格。我相信在老師的嚴格要求下,在以后的社會實踐中定能不斷的提升自己。附錄1: 參考文獻參考文獻(1)Java課程設(shè)計(第二版),耿祥義,清華大學(xué)出版社。(2)Java課程設(shè)計案例精編,張廣彬等,清華大學(xué)出版社。(3)JSP通用模塊及典型系統(tǒng)開發(fā)實例導(dǎo)航,王夕寧,王曉平等,人民郵電出版社.(4)JSP數(shù)據(jù)庫系統(tǒng)開發(fā)案例精選,明日科技,王國輝,王易等, 北京人民郵電出版社. (5)Java Web應(yīng)用開發(fā):J2EE和Tomcat,蔡劍,景楠等,清華大學(xué)出版社. (6)Java語言程序
49、設(shè)計基礎(chǔ)篇Y.Daniel Liang(美)著,機械工程出版社。網(wǎng)絡(luò)資料:JAVA窗體快速開發(fā)(字體修正版)_百度文庫(8)謝希仁.計算機網(wǎng)絡(luò).北京:電子工業(yè)出版社,2012;附錄2: 主要源程序publicclass Ftp extends JFrameFtpBean ftp=new FtpBean();/FTP客戶端對象private FileWriter write ;private PrintWriter out;private Date time;private JTextField url = new JTextField();/FTP服務(wù)器地址private JTextField
50、 port = new JTextField();/FTP服務(wù)器端口private JTextField username = new JTextField();/用戶名private JTextField password = new JTextField();/密碼private JTextField status = new JTextField();/當前狀態(tài)private JButton connectButton=new JButton(連接);/連接按鈕private JButton closeButton=new JButton(斷開連接);/斷開連接按鈕private JPo
51、pupMenu popup = new JPopupMenu();/建立一個彈出式菜單private JMenuItem refresh = new JMenuItem(刷新); /右鍵彈出菜單private JMenuItem delete = new JMenuItem(刪除); private JMenuItem download = new JMenuItem(下載); private JMenuItem upload = new JMenuItem(上傳); private JMenuItem rename = new JMenuItem(重命名);private JMenuItem
52、 upDir = new JMenuItem(上級目錄);private JMenuItem showLog = new JMenuItem(顯示日志信息);final DefaultListModel m=new DefaultListModel(); /顯示文件列表JList fileList = new JList(m);/設(shè)置一組數(shù)組JScrollPane fileScrollPane;private Dimension faceSize = new Dimension(400, 400);/框架大小public Ftp()init(); createPopup(); /彈出菜單tim
53、e = new Date();trywrite = new FileWriter(log.txt,true);out = new PrintWriter(write,true);catch(IOException ioe)ioe.printStackTrace();status.setEditable(false);this.add(status,BorderLayout.SOUTH);/放置操作信息顯示板connectButton.addActionListener( new ActionListener()publicvoid actionPerformed(ActionEvent e)connect(););closeButton.addActionListener(new ActionListener()publicvoid actionPerformed(ActionEvent e)close();time = new Date();out.println(time+ 離開服務(wù)器:+url.getText(););this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/添加框架的關(guān)閉事件處理this.pack(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度建筑工程現(xiàn)場巡檢監(jiān)管合同范本正規(guī)范本3篇
- 2025年度10千伏電力施工竣工驗收合同范本3篇
- 2024年預(yù)制板加工與物流服務(wù)合同3篇
- 2024年食堂食品安全責任書合同范本3篇
- 2025年度消防水池及消防泵房施工合同示例3篇
- 二零二五年度合資房地產(chǎn)項目開發(fā)合同范本3篇
- 2024年運輸代理公司倉儲配送銷售合同模板9篇
- 二零二五年度住宅交房及社區(qū)安全物業(yè)管理協(xié)議3篇
- 二零二五年度個體工商戶合伙人工智能技術(shù)應(yīng)用合作協(xié)議3篇
- 二零二五年度企業(yè)安全文化塑造與安保人員培訓(xùn)協(xié)議2篇
- DB23T 1727-2016 地理標志產(chǎn)品 克東天然蘇打水
- 水電站施工合同水電站施工合同(2024版)
- 渭南市白水縣2021-2022學(xué)年七年級上學(xué)期期末考試數(shù)學(xué)試卷【帶答案】
- 2024時事政治必考試題庫附答案(滿分必刷)
- DZ∕T 0289-2015 區(qū)域生態(tài)地球化學(xué)評價規(guī)范(正式版)
- 公司年會小品《老同學(xué)顯擺大會》臺詞劇本手稿
- 護士條例課件
- 工程造價畢業(yè)設(shè)計總結(jié)報告
- 結(jié)腸鏡檢查前腸道準備
- 2023-2024學(xué)年統(tǒng)編版高中語文選擇性必修中冊《屈原列傳》檢測卷(含答案)
- 創(chuàng)業(yè)基礎(chǔ)知識競賽題庫及答案
評論
0/150
提交評論