




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 目錄摘要.2關(guān)鍵詞.21.引言.22.FTP協(xié)議分析.2 2.1FTP工作原理.2 2.2FTP工作模式.4 2.3FTP傳輸模式.6 2.3.1ASCII傳輸方式.6 2.3.2二進制傳輸方式.63.FTP客戶端的總體設(shè)計.6 3.1設(shè)計目的及工具的選擇.6 3.1.1設(shè)計目的.6 3.1.2設(shè)計工具.7 3.1.3FtpClient類.7 3.2客戶端主要模塊設(shè)計.7 3.2.1客戶端功能模塊.8 3.2.2客戶端界面設(shè)計.9 3.3數(shù)據(jù)流程圖.9 3.3.1客戶端連接流程圖.9 3.3.2上傳子模塊流程圖.11 3.3.3下載子模塊流程圖.124.FTP客戶端程序?qū)崿F(xiàn).14 4.1客戶
2、端顯示界面實現(xiàn).14 4.1.1數(shù)據(jù)輸入界面詳細設(shè)計.14 4.1.2服務(wù)器文件信息顯示界面詳細設(shè)計.14 4.1.3上下載隊列顯示界面和信息顯示界面詳細設(shè)計.15 4.1.4操作按鈕模塊詳細設(shè)計.15 4.2功能模塊實現(xiàn).16 4.2.1連接服務(wù)器.16 4.2.2上傳文件.16 4.2.3下載文件.175. 功能運行測試.176.結(jié)語.20參考文獻.21附錄.22FTP客戶端的設(shè)計與實現(xiàn)摘要:FTP是Internet上用來傳送文件的協(xié)議。它是為了我們能夠在Internet上互相傳送文件而制定的文件傳送標準,規(guī)定了Internet上文件如何傳送。通過FTP協(xié)議,我們就可以跟Internet上
3、的FTP服務(wù)器進行文件的上傳或下載。本文以實現(xiàn)一個簡單易用的FTP客戶端為目標,通過分析FTP協(xié)議的基本工作原理和FTP的數(shù)據(jù)傳輸原理,研究如何使用Java工具對FTP客戶端進行設(shè)計,選擇Java類庫中的FtpClient類來實現(xiàn)FTP客戶端程序的上傳下載等主要功能,并用eclipse軟件提供的一個支持可視化編程的開發(fā)環(huán)境,從而實現(xiàn)了對FTP客戶端的開發(fā)。關(guān)鍵詞:FTP協(xié)議 ,工作原理,F(xiàn)tpClient,上傳下載引言 目前,F(xiàn)TP服務(wù)已經(jīng)是網(wǎng)絡(luò)上廣泛使用的一種服務(wù)了,它是建立在FTP協(xié)議上的用于網(wǎng)絡(luò)環(huán)境下進行文件傳輸?shù)囊环N文件傳輸系統(tǒng),幾乎可以傳輸各種類型的文件,如文本文件,聲音文件,圖像文
4、件等。一個文件傳輸系統(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)。 本文首先分析了FTP協(xié)議,F(xiàn)TP的工作原理等,然后介紹了如何使用Java工具來設(shè)計和實現(xiàn)一個簡單的FTP客戶端。使用本FTP客戶端,可以使
5、用戶輕松的下載、上傳網(wǎng)絡(luò)資源。2. FTP協(xié)議分析 2.1FTP的工作原理 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 傳輸層 IP 互聯(lián)網(wǎng)絡(luò)層 X25 ISDN LAN WLAN FDDI ATM 網(wǎng)絡(luò)接口層 當啟動FTP從遠程計算機拷貝文件時,
6、事實上啟動了兩個程序:一個本地機器上的FTP客戶端程序,它向FTP服務(wù)器提出拷貝文件的請求。另一個是啟動在遠程計算機的上的FTP服務(wù)器程序,它響應(yīng)請求把你指定的文件傳送到你的計算機中。FTP采 用“客戶端/服務(wù)器”方式,用戶要在自己的本地計算機上安裝FTP客戶端程序。 從根本上說,F(xiàn)TP協(xié)議就是在網(wǎng)絡(luò)中各種不同的計算機之間按照TCP/IP協(xié)議來傳輸文件。FTP協(xié)議采用客戶端/服務(wù)器(Client/Sever)模式,由FTP客戶端程序和FTP服務(wù)器端程序組成。使用時,先啟動FTP客戶端程序與遠程主機建立連接,然后向遠程主機發(fā)出傳輸命令,遠程主機在收到命令后就給予響應(yīng),并執(zhí)行正確的命令。但是FTP
7、有一個根本的限制,那就是,如果用戶在某個主機上沒有注冊獲得授權(quán),即沒有用戶名和口令,就不能與該主機進行文件傳輸。但匿名FTP服務(wù)器除外,它能夠使用戶與遠程主機建立連接并以匿名身份從遠程主機上拷貝文件,而不必是該遠程主機的注冊用戶。用戶使用特殊的用戶名“Anonymous”或“guest”就可有限制地訪問遠程主機上公開的文件?,F(xiàn)在許多系統(tǒng)要求用戶將Emai1地址作為口令,以便更好地對訪問者進行跟綜。出于安全的目的,大部分匿名FTP主機一般只允許遠程用戶下載文件,而不允許上載文件。也就是說,用戶只能從匿名FTP主機拷貝其需要的文件而不能把文件拷貝到匿名FTP主機。另外,匿名FTP主機還采用了其他一
8、些保護措施以保護自己的文件不至于被用戶修改和刪除,并防止計算機病毒的侵入。匿名FTP一直是Internet上獲取信息資源的最主要方式,在Internet成千上萬的匿名FTP主機中存儲著無以計數(shù)的文件,這些文件包含了各種各樣的信息、數(shù)據(jù)和軟件。人們只要知道特定信息資源的主機地址,就可以用匿名FTP登陸。2.2 FTP工作模式FTP采用C/S(客戶端/服務(wù)器)模式進行通信,但與其他的C/S模式網(wǎng)絡(luò)通信協(xié)議又有一個很大的區(qū)別。通常在進行HTTP通信或是TELNET通信的時候,只需要一個端口進行通信。即客戶端只需要連接一個端口進行數(shù)據(jù)通信。如TELNET的默認端口是23,用戶從頭到尾都只需使用這個端口
9、。但是FTP通信除了有一個默認端口21之外,還需要其他的端口。其中默認端口(21)主要進行控制連接,進行命令協(xié)議和服務(wù)器端的響應(yīng)碼的傳輸;另外一個非標準端口主要進行數(shù)據(jù)傳遞,如文件的上載、下載等。至于非標準端口的產(chǎn)生則要根據(jù)用戶選擇的連接模式而定:如果客戶選擇的是主動模式(PORT),則需要用戶端提供給服務(wù)器一個IP地址和一個非標準端口;而如果用戶采用被動模式(PASV),則服務(wù)器端需要提供給客戶端一個IP地址和一個非標準端口。下表是幾個著名的TCP端口號: 表2 TCP端口號TCP端口號 關(guān)鍵字 描述 20 FTP-DATA 文件傳輸協(xié)議數(shù)據(jù) 21 FTP 文件傳輸協(xié)議控制 23 TELEN
10、ET 遠程登錄協(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)進行解釋。控制連接是建立在USER-PIT和SERVER-PI之間用于交換命令與應(yīng)答的通信鏈路。數(shù)據(jù)連接是傳輸數(shù)據(jù)的全雙工連接,傳輸數(shù)據(jù)可以發(fā)生在服務(wù)器DTP和用戶DTP之間也可以發(fā)生在兩個服務(wù)器DTP之間,F(xiàn)TP可以傳輸非連續(xù)的文件,這些文件的一部分稱為頁。服務(wù)器DTP代表
11、一種傳輸過程,它通常處于“主動”狀態(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 圖1FTP工作模式圖 上圖中用戶PI開始控制連接,控制連接與Telnet協(xié)議很象。在開始階段,標準FTP命令由用戶PI產(chǎn)生并通過控制連接傳送到服務(wù)器進程。服務(wù)器PI向用
12、戶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ù)連接是全雙工的。 2.3FTP傳輸模式 FTP協(xié)議的任務(wù)是從一臺計算機將文件傳送到另一臺計算機,它與這兩臺計算機所處的位置、聯(lián)接的方式、甚至是是否使用相同的操作系統(tǒng)無關(guān)。假設(shè)兩臺計算機通過ftp協(xié)議對話,并且能訪問Internet,你可以用ftp命令來傳輸文件。每種操作系統(tǒng)使用上有某一些細微差別,但是每種協(xié)議基本的命令結(jié)構(gòu)是相同的。FTP的傳輸有兩種方式:A
13、SCII傳輸模式和二進制數(shù)據(jù)傳輸模式。2.3.1 ASCII傳輸方式 假定用戶正在拷貝的文件包含的簡單ASCII碼文本,如果在遠程機器上運行的不是UNIX,當文件傳輸時ftp通常會自動地調(diào)整文件的內(nèi)容以便于把文件解釋成另外那臺計算機存儲文本文件的格式。但是常常有這樣的情況,用戶正在傳輸?shù)奈募牟皇俏谋疚募?,它們可能是程序,?shù)據(jù)庫,字處理文件或者壓縮文件(盡管字處理文件包含的大部分是文本,其中也包含有指示頁尺寸,字庫等信息的非打印字符)。在拷貝任何非文本文件之前,用binary命令告訴ftp逐字拷貝,不要對這些文件進行處理。2.3.2二進制傳輸方式 在二進制傳輸中,保存文件的位序,以便原始和
14、拷貝的是逐位一一對應(yīng)的。即使目的地機器上包含位序列的文件是沒意義的。例如,macintosh以二進制方式傳送可執(zhí)行文件到Windows系統(tǒng),在對方系統(tǒng)上,此文件不能執(zhí)行。如果你在ASCII方式下傳輸二進制文件,即使不需要也仍會轉(zhuǎn)譯。這會使傳輸稍微變慢,也會損壞數(shù)據(jù),使文件變得不能用。如果你知道這兩臺機器是同樣的,則二進制方式對文本文件和數(shù)據(jù)文件都是有效的。3 FTP客戶端總體設(shè)計3.1設(shè)計目的及工具選3.1.1 設(shè)計目的 FTP早已應(yīng)用在網(wǎng)絡(luò)的各個方面,比如我們在訪問網(wǎng)絡(luò)上的資源時,經(jīng)常會遇到需要連接FTP服務(wù)器來下載,或者你制作了一個網(wǎng)站,想要將其上傳至服務(wù)器,讓大家能夠訪問它,這個時候就會
15、用到FTP客戶端。雖然平時使用windows自帶的IE瀏覽器即可實現(xiàn)對FTP服務(wù)器的訪問,但是IE只是個很粗糙的FTP客戶端。IE瀏覽器在6.0以下的版本不支持PASV方式訪問服務(wù)器,而且IE瀏覽器在登錄FTP服務(wù)器的時候,無法查看返回的信息,在出錯的時候,無法找到錯誤的原因,因此在使用上很不方便?,F(xiàn)在大多數(shù)的FTP客戶端軟件都是收費版的,而且以英文版居多,使用上操作很復雜,目前流行的有CoreFtp、AceFtp、FtpVoyager等,但是大多數(shù)用戶并不習慣使用這些軟件。本文所設(shè)計的FTP客戶端則適合大多數(shù)用戶使用,界面設(shè)計的很簡單,使用戶可以一目了然,而且具備FTP客戶端的基本功能,可以
16、作為下載、上傳文件的工具來使用。3.1.2 設(shè)計工具 程序設(shè)計中用到的主要工具就是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語言來實現(xiàn)。3.1.3 f
17、tpclient類 Java類庫的存在使它適合于一個不斷發(fā)展的環(huán)境。在類庫中我們可以自由地加入新的方法和實例變量而不會影響用戶程序的執(zhí)行。并且Java通過接口來支持多重繼承,使其比嚴格的類繼承具有更靈活的方式和擴展性。在處理復雜事物的時候,用到的一種基本手段就是抽象。抽象的目的就是區(qū)別事物之間的本質(zhì)和不同,面向?qū)ο缶幊蹋∣OP)的實質(zhì)就是利用類和對象來建立抽象模型。類表示了對象的類別,是創(chuàng)建對象的藍本。建立一個事物的抽象模型,本質(zhì)上就是表達該事物的性質(zhì)和行為。使用類來建立抽象模型,是通過在類中定義變量和方法來實現(xiàn)的。類中定義的屬性是一種可存儲值的變量,該變量代表著事物的具體性質(zhì)。 在J2SE中
18、提供了與客戶端編程有關(guān)的Api,它就是.ftp.FtpClient類,F(xiàn)tpClient類封裝了FTP協(xié)議的相關(guān)指令與實現(xiàn)細節(jié),提供了一系列的方法,這些方法涵蓋了幾乎所有ftp的功能使用FtpClient類設(shè)計FTP客戶端程序可以讓編程人員輕松地實現(xiàn)登錄遠程FTP服務(wù)器、瀏覽服務(wù)器上的目錄、設(shè)置傳輸協(xié)議、上傳文件和下載文件等功能。 本文所使用的FtpClient類的構(gòu)造方法和主要方法如下:1.PublicFtpClient(Stringhostname)此構(gòu)造函數(shù)利用給出的主機名建立一條FTP連接,使用默認端口號。2.PublicvoidopenServer(Stringhostname)這個
19、方法用于建立一條與指定主機上的FTP服務(wù)器的連接,使用默認端口號。3.Publicvoidlogin(Stringusername,Stringpassword)此方法利用參數(shù)username和password登錄到FTP服務(wù)器。使用過Internet的用戶應(yīng)該知道,匿名FTP服務(wù)器的登錄用戶名為anonymous,密碼一般用自己的電子郵件地址。Publicvoidbinary():該命令可把傳輸格式設(shè)置為二進制格式。3.2.1客戶端功能模塊 FTP客戶端作為用戶連接FTP服務(wù)器的工具,需要具備一些基本功能模塊,如連接、上傳、下載等,其中最主要的三大功能模塊如下:1、下載功能模塊:連接用戶指定
20、的FTP服務(wù)器,獲取服務(wù)器目錄下的文件列表,當用戶選擇項目為文件時,點擊下載可以下載用戶所需要的文件。選定文件后提示用戶將文件存儲在何處,用戶選擇存儲區(qū)后開始下載任務(wù)。依靠FTP協(xié)議的支持,用戶下載的文件沒有類型和大小限制,即用戶可已選擇任何自己想要下載的文件,通過FTP客戶端進行下載。2、上傳功能模塊:用戶可以自行選擇本機上存儲的文件,上傳至FTP服務(wù)器。在用戶選擇存儲在服務(wù)器的位置后,點擊上傳,選擇所需要上傳的文件,即可將文件上傳至服務(wù)器。3、連接功能模塊:將用戶本機與指定的IP地址連接,驗證用戶命和密碼,在FTP服務(wù)器上進行注冊。有了這三個基本的功能模塊,客戶端的基本應(yīng)用功能即可實現(xiàn)。3
21、.2.2客戶端界面設(shè)計 為了使用戶能夠方便的使用FTP客戶端,在設(shè)計中我將數(shù)據(jù)輸入和信息顯示整合在一個頁面中,全部客戶端僅包含一個主要的窗口,窗口中分別有以下五個界面:1、數(shù)據(jù)輸入界面:用來讓用戶輸入服務(wù)器地址,用戶名,密碼。2、服務(wù)器文件信息顯示界面:主要用來顯示服務(wù)器下存儲的文件,方便用戶清楚的了解服務(wù)器中存儲了哪些文件。3、上下載隊列顯示界面:顯示正在下載或上傳的文件線程。4、操作按鈕界面:用戶可以通過點擊上傳、下載、斷開、關(guān)閉等按鈕來實現(xiàn)客戶端的具體操作。5、信息顯示界面:顯示當前連接信息和上傳下載是否成功信息。這五個界面可以使用eclipse工具下的swing控件來實現(xiàn),在布局時,將
22、界面內(nèi)的各個元素整合在一個框架中。設(shè)計的主界面如圖2: 圖2 客戶端界面3.3數(shù)據(jù)流程圖3.3.1 客戶端連接流程圖運行客戶端后,首先是連接服務(wù)器,需要輸入服務(wù)器IP地址及用戶名和密碼點擊連接按鈕后開始連接服務(wù)器。下圖為客戶端連接流程圖。用戶輸入服務(wù)器地址及用戶名和密碼 連接服務(wù)器發(fā)送用戶名及密碼至服務(wù)器在信息顯示模塊顯示連接成功是否連接成功是獲取服務(wù)器文件列表否刷新服務(wù)器文件顯示文件列表在信息顯示模塊顯示連接失敗 圖3 客戶端連接流程圖連接的結(jié)果有兩種,即圖中顯示的連接失敗和連接成功。3.3.2 上傳子模塊流程圖 當用戶點擊上傳按鈕后,用戶可以選擇需要上傳的文件,并指定上傳位置,將本機上的文
23、件上傳至FTP服務(wù)器。下圖為上傳子模塊流程圖。點擊上傳按鈕彈出文件選擇對話框獲取用戶選擇的文件名新建一個上傳任務(wù)登錄到FTP服務(wù)器目標目錄下上傳是否成功彈出對話框顯示上傳成功是重新獲取服 務(wù)器文件列表更新服務(wù)器文件列表否 清除線程彈出對話框顯示上傳失敗 圖4 上傳模塊流程圖 上傳的結(jié)果有兩種,上傳失敗和成功,失敗時會提示用戶上傳失敗,原因可能是權(quán)限,如果成功上傳,則提示上傳成功。3.3.3 下載子模塊流程圖當用戶在服務(wù)器文件列表中選擇想要下載的文件后,選擇需要下載文件在本機上的存儲位置,將服務(wù)器上的文件下載至本機。下圖為上傳子模塊流程圖。選擇要下載的文件點擊下載按鈕選擇文件在本機存儲位置獲取文
24、件信息將信息傳送至任務(wù)新建下載任務(wù)登錄到FTP服務(wù)器目標目錄下下載是否成功彈出對話框顯示下載成功是重新獲取服務(wù)器文件列表更新服務(wù)器文件列表否彈出對話框顯示下載失敗清除線程圖5下載模塊流程圖4 FTP客戶端程序?qū)崿F(xiàn)4.1.1數(shù)據(jù)輸入界面詳細設(shè)計該界面用來記錄用來輸入服務(wù)器的站點,用戶名和密碼信息,然后將信息發(fā)送到服務(wù)器進行驗證,利用Jtextfiled構(gòu)件來實現(xiàn)。客戶端一共有4個文本輸入框,分別為服務(wù)器地址輸入框url,用戶名輸入框username,密碼輸入框password 和端口號port。在程序運行時,用戶在輸入框url中輸入的FTP服務(wù)器站點、用戶在輸入框username中輸入的用戶名、
25、用戶在輸入框password 中輸入密碼,用戶在端口號輸入框port中輸入端口號。利用getTEXT()函數(shù)獲取輸入框中的數(shù)據(jù),將url中的數(shù)據(jù)存儲至ip 中,將username中的數(shù)據(jù)存儲至username中;如果用戶沒有在username中輸入數(shù)據(jù),則默認為用戶使用匿名方式登錄,將用戶名設(shè)置為designpattern,password中的數(shù)據(jù)則存儲至password,如 果 用 戶 沒 有 在password 中輸 入 數(shù) 據(jù) , 則 默 認 設(shè) 置 為designpattern。JTextField類的定義:JTextField url=new JTextField();服務(wù)器IP輸入
26、框JTextField username=new JTextField();用戶名輸入框JTextField password=new JTextField();密碼輸入框JTextField port=new JTextField();端口號輸入框4.1.2服務(wù)器文件信息顯示界面詳細設(shè)計該界面的作用是是顯示服務(wù)器文件列表,利用Jscrollpane構(gòu)件來實現(xiàn)。在客戶端主界面創(chuàng)建一個Jscrollpane,命名為ftpFileScrollPane1,并置于主界面中間,該表格包括三個數(shù)據(jù)項:文件名file,文件大小filesizes,修改日期filedates,使用一個二維數(shù)組mydata來存儲
27、這三個數(shù)據(jù)。當客戶端連接上服務(wù)器時,表格數(shù)據(jù)自動更新,主要功能使用setTableData()函數(shù)實現(xiàn)。當服務(wù)器連接時首先清除文件列表信息,利用removeAllElements()函數(shù)實現(xiàn),然后切換到當前目錄,使用ftpClient類中的cd命令實現(xiàn),再使用list命令前目錄下的數(shù)據(jù)、包括目錄和文件名。JScrollPane類的定義:JScrollPane ftpFileScrollPane1=newJScrollPane(ftpFileInfosTable);4.1.3上下載隊列顯示界面和信息顯示界面詳細設(shè)計 這兩個模塊是信息顯示模塊,使用JScrollPane和JTextArea構(gòu)件實現(xiàn)
28、。其中taskScrollPan顯示上傳下載進程信息,consoleScrollPane顯示連進程開始 或 結(jié)束 信 息 , 將 信 息 顯示 的 文 本 域consoleTextArea放在 滾 動條 面 板consoleScrollPane中,并且設(shè)置為不可編輯。當客 戶 端 連 接 成 功 或 失 敗 ,上 傳 文 件 或 下 載 文 件 時 , 利 用 函 數(shù)taskScrollPane.append()和consoleTextArea.append()在相應(yīng)的區(qū)域顯示任務(wù)信息。JScrollPane類的定義:JScrollPanetaskScrollPane=newJScrollPa
29、ne(taskList);JScrollPaneconsoleScrollPane=newJScrollPane(consoleTextArea);4.1.4操作按鈕模塊詳細設(shè)計操作按鈕使用JButton構(gòu)件實現(xiàn),客戶端共有連接、上傳、下載、斷開、關(guān)閉、上一級目、錄刷、新重命名8個操作按鈕,分別命名為connectButton、closeButton、refreshButton 、deleteButton 、 downloadButton 、 uploadButton renameButton 、upDirButton。JButton類的定義: private JButton connectB
30、utton=new JButton("連接");private JButton closeButton=new JButton("斷開連接");private JButton refreshButton =new JButton("刷新");private JButton deleteButton = new JButton("刪除"); private JButton downloadButton = new JButton("下載"); private JButton uploadButto
31、n = new JButton("上傳"); private JButton renameButton = new JButton("重命名");private JButton upDirButton = new JButton("上級目錄");每個按鈕都有自己的響應(yīng)事件來實現(xiàn)各自的功能,分別如下連接:connectButton.addActionListener( ).上傳:uploadButton.addActionListener(new ActionListener().下載:downloadButton.addActionL
32、istener(new ActionListener().刪除:deleteButton.addActionListener(new ActionListener().斷開:closeButton.addActionListener(new ActionListener().上一級目錄:upDirButton.addActionListener(new ActionListener().刷新:refreshButton.addActionListener(new ActionListener().重命名:renameButton.addActionListener(new ActionList
33、ener().各按鈕在定義各自的響應(yīng)后,用戶在點擊這些按鈕時,會做出相應(yīng)的處理,啟動對應(yīng)的進程。4.2功能模塊實現(xiàn)4.2.1連接服務(wù)器客戶端中FtpBean類中connect方法用來實現(xiàn)連接服務(wù)器功能,在Java中實現(xiàn)這一功能是借助FtpClient類完成的,首先是使用FtpClient類的openServer(stringserver)方法打開遠程FTP服務(wù)器,然后使用FtpClient類的login(user,password)方法登錄服務(wù)器。登錄遠程FTP服務(wù)器有兩種方式,一種是注冊用戶登錄,另一種是以匿名方式登錄。使用第一種方式登錄需要擁有該服務(wù)器的注冊用戶名和密碼,匿名方式則是以de
34、signpattern作為用戶名來登錄。類ftpClient提供了如下兩個可用于打開與FTP服務(wù)器之間的連接的方法1.openServer(Stringhostname)用于建立一條與指定主機上的FTP服務(wù)器的連接,使用默認端口號:212. connect(String dir, String hostname, int port, String username,String passwd) 用于建立一條與指定主機、指定端口上的FTP服務(wù)器的連接。本文所使用的是第一種方法進行連接,首先定義4個字符串,命名為ip,username,port,password,分別用來接收來自數(shù)據(jù)輸入界面的數(shù)據(jù)
35、。然后將接收到的數(shù)據(jù)發(fā)送至服務(wù)器驗證,驗證成功則使用對話框函數(shù)在信息顯示界面中提示連接成功,失敗則顯示連接失敗。4.2.2上傳文件客戶端中實現(xiàn)上傳功能的文件為FtpBean類中的uploadFile函數(shù)來實現(xiàn)。當用戶選擇文件上傳時,客戶端會創(chuàng)建一個到FTP服務(wù)器的連接,同樣使用ftpClient類的openServer()方法和login()登錄到服務(wù)器,并切換到用戶選擇的目標目錄下,把傳輸格式設(shè)置為二 進 制 格 式 , 將 本 地 文 件 上 傳 至FTP 服 務(wù) 器 。 上 傳 結(jié) 束 后 利 用ftpClient.closeServer()函數(shù)斷開,并更新數(shù)據(jù)表格和清除任務(wù)線程。一般情
36、況下FTP服務(wù)器為了保證其安全性,權(quán)限中會設(shè)置是否允許用戶上傳文件。上傳失敗時,出錯處理會在對話框面板中顯示出文件上傳失敗。上傳的具體代碼見附錄。4.2.3下載文件客戶端下載文件由為FtpBean類中的downloadFile函數(shù)來實現(xiàn)。如果用戶想要下載列表中的某一個文件,首先判斷項目的類型是否是文件,如果是文件,則得到下載的文件名并下載文件,如果選中的是目錄,則不能下載。用戶選擇好要下載的文件后,客戶端打開服務(wù)器連接端口,使用ftpClient類的openServer()方法和login()登錄到服務(wù)器,把傳輸格式設(shè)置為二進制格式,使用ftpClient.get()函數(shù)獲得文件名,下載并保存
37、至用戶指定的路徑。下載完成后ftpClient.closeServer()關(guān)閉與服務(wù)器的連接并清除線程。當用戶下載失敗時,出錯處理會在信息顯示面板中顯示下載出錯。下載的具體代碼見附錄。5 功能運行測試為了驗證程序是否能正常運行,我選擇連接IP為29的FTP服務(wù)器來測試。運行環(huán)境為windows7+eclipse。首先是服務(wù)器連接的驗證:在服務(wù)器地址中輸入29,在用戶名中輸入designpattern,在密碼欄中輸入designpattern,點擊連接按鈕后,出現(xiàn)結(jié)果如下圖:結(jié)果顯示連接功能實現(xiàn),服務(wù)器文件信息列表中顯示了ip為122.206.79
38、.129的FTP服務(wù)器下的文件夾列表,信息顯示中顯示了正確的連接信息。然后是下載文件功能的測試,選擇程序設(shè)計模式封頁.doc文件,點擊下載選擇保存至D盤,如圖:繼續(xù)點擊保存按鈕,下載任務(wù)中成功添加下載任務(wù),文件下載完后,如圖: 最后是上傳功能測試。先在本機上創(chuàng)建一個名叫“程序設(shè)計模式封頁.doc”的文件,選擇上傳至跟目錄下,點擊上傳,顯示如圖:為了驗證是否真的上傳至FTP服務(wù)器,我用網(wǎng)上鄰居訪問了IP為29的FTP服務(wù)器,結(jié)果如圖:文件確實上傳成功。至此,功能驗證已經(jīng)完畢!6 .結(jié)語 FTP的目標是提高文件的共享性和可靠高效地傳送數(shù)據(jù),而FTP客戶端的作用是使用戶方便的
39、連接和訪問FTP服務(wù)器。本文實現(xiàn)了一個簡單易用的FTP客戶端,在分析FTP協(xié)議的基本工作原理和FTP的數(shù)據(jù)傳輸原理的基礎(chǔ)上,詳細介紹了如何使用Java工具對FTP客戶端進行設(shè)計,選擇Java類庫來實現(xiàn)FTP客戶端程序的上傳下載等主要功能,并用eclipse軟件提供的一個支持可視化編程的開發(fā)環(huán)境,從而實現(xiàn)了對FTP客戶端的開發(fā)。雖然現(xiàn)在有很多實現(xiàn)FTP客戶端程序的技術(shù)和方法,諸如Winsock控件和Delphi的Indy組件等,但是使用Java在程序?qū)崿F(xiàn)上顯得更加簡捷靈活,并具有較好的可擴充性和可移植性,在本文中使用的方法也是比較便捷和高效的。參考文獻1楊錫林、張燕等.Java編程高手.北京大學
40、出版社,2000年12月第一版(1):169173.2葉新銘等譯.計算機網(wǎng)絡(luò)(原書第二版).機械工業(yè)出版社,2001年6月 :端到端協(xié)議242-283.3夏先波等.JAVA+JDK實例開發(fā)寶典.電子工業(yè)出版社,2001年第一版:第13章.網(wǎng)絡(luò)編程281289.4 J. Reynolds. RequestforComments:959:FileTransferProtocol,October1985 ,:THEFTPMODEL78.5葉俊民.軟件工程.清華大學出版社,2006年6月第一版:第3章.軟件需求分析基礎(chǔ)5173.6Horstmann,C.S,Cornell,G.Java2核心技術(shù).機械
41、工業(yè)出版社,2006年3月第一版:第6章.高級Swing2793857 楊淑萍 基于Java的FTP客戶端程序的設(shè)計與實現(xiàn) .現(xiàn)代計算機.8 謝希仁 計算機網(wǎng)絡(luò)(第五版) 電子工業(yè)出版社附錄:程序源碼 ,主要核心代碼:FTPFrame.javapublic void connect()/連接FTP服務(wù)器String s=ftp.connect("/", url.getText().toString(), Integer.parseInt(port.getText(), username.getText().toString(), password.getText().toS
42、tring();status.setText(s);update();if(s.equals("Success")time = new Date();out.println(time+" 登陸服務(wù)器:"+url.getText();connectButton.setEnabled(false);closeButton.setEnabled(true);elseJOptionPane.showMessageDialog(null, s);connectButton.setEnabled(true);closeButton.setEnabled(false)
43、;public void uploadFile()/上傳文件JFileChooser fDialog=new JFileChooser(); /文件選擇器int result=fDialog.showOpenDialog(null);if(result=JFileChooser.APPROVE_OPTION)String file=fDialog.getSelectedFile().toString();String targetFile=new String();StringTokenizer st=new StringTokenizer(file,"");/拆分文件名w
44、hile(st.hasMoreTokens()targetFile=st.nextToken();boolean b=ftp.uploadFile(file,targetFile);if(b=true)update();status.setText("上傳文件"+targetFile+"成功");JOptionPane.showMessageDialog(null, "上傳文件"+targetFile+"成功");time = new Date();out.println(time+" 上傳文件:&quo
45、t;+targetFile+"成功");elsestatus.setText("上傳文件"+targetFile+"失敗");JOptionPane.showMessageDialog(null, "上傳文件"+targetFile+"失敗");out.println(time+" 上傳文件:"+targetFile+"失敗"); public void downloadFile()/下載文件if(!fileList.isSelectionEmpty()S
46、tring targetFile=fileList.getSelectedValue().toString();/獲取所選擇的文件JFileChooser fDialog=new JFileChooser(); /文件選擇器int result=fDialog.showOpenDialog(null);if(result=JFileChooser.APPROVE_OPTION) ftp.downloadFile(targetFile, fDialog.getSelectedFile().toString(); update(); status.setText("下載文件"+targetFile+"成功"); JOptionPane.showMessageDialog(null, "下載文件"+targetFile+"成功"); time = new Date(); out.println(time+" 下載文件:"+targetFile); elseJOptionPane.showMessageDialog(null, "請選擇所要下載的文件"); public void close()/關(guān)閉連接 String s=ftp.cl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 三醫(yī)政策分析半年報2025(極簡版)
- 營運電動車過戶管理辦法
- 蓬萊艾山保護區(qū)管理辦法
- 銜接資金項目庫管理辦法
- 健康活動不貪食冷飲課件
- 衢州公積金提前管理辦法
- 西安住校生封閉管理辦法
- 規(guī)范代收費管理暫行辦法
- 設(shè)備液壓與潤滑管理辦法
- 試驗室授權(quán)資質(zhì)管理辦法
- 給非財務(wù)人員的財務(wù)培訓
- 公司攝影小組活動方案
- 銀行 輿情培訓 課件
- 小兒重癥??七M修匯報
- 供水公司維修管理制度
- 寧城職教中心實習實訓基地項目可行性論證報告
- 公司家屬開放日活動方案
- DB14-T 3403-2025 灌木林地造林技術(shù)規(guī)程
- 2025廣西中醫(yī)藥大學賽恩斯新醫(yī)藥學院教師招聘考試試題
- 密碼測評安全管理制度
- JG/T 405-2013住宅內(nèi)用成品樓梯
評論
0/150
提交評論