版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
2012—2013學年第二學期題 目: FTP客戶端與實專業(yè)班級: 軟件工Java10-06班組 員:日 期: 2013-07-04目錄摘要 2關(guān)鍵詞 2引言 2FTP協(xié)議分析 2FTP工作原理 FTP工作模式 FTP傳輸模式 ASCII傳輸方式 6二進制傳輸方式 6FTP客戶端的總體設計 6設計目的及工具的選擇 6設計目的 6設計工具 7類 7客戶端主要模塊設計 7客戶端功能模塊 8客戶端界面設計 9數(shù)據(jù)流程圖 9客戶端連接流程圖 9上傳子模塊流程圖 11下載子模塊流程圖 12FTP客戶端程序?qū)崿F(xiàn) 14客戶端顯示界面實現(xiàn) 14數(shù)據(jù)輸入界面詳細設計 14服務器文件信息顯示界面詳細設計 14上下載隊列顯示界面和信息顯示界面詳細設計 15操作按鈕模塊詳細設計 15功能模塊實現(xiàn) 16連接服務器 16上傳文件 16下載文件 17功能運行測試 176.結(jié)語 20參考文獻 21附錄 22FTP客戶端的設計與實現(xiàn) 摘要 : FTP是 Internet上用來傳送文件的協(xié)議。它是為了我們能夠在 Internet上互 相傳送文件而制定的文件傳送標準 , 規(guī)定了 Internet上文件如何傳送 。 通過 FTP協(xié)議 , 我們就可以跟 Internet上的 FTP服務器進行文件的上傳或下載 。 本文以實現(xiàn)一 個簡單易用的 FTP客戶端為目標,通過分析 FTP協(xié)議的基本工作原理和 FTP的數(shù) 據(jù)傳輸原理,研究如何使用 Java工具對 FTP客戶端進行設計,選擇 Java類庫中的 FtpClient類來實現(xiàn) FTP客戶端程序的上傳下載等主要功能 ,并用 eclipse軟件提供的 一個支持可視化編程的開發(fā)環(huán)境,從而實現(xiàn)了對 FTP客戶端的開發(fā)。 關(guān)鍵詞 : FTP協(xié)議 ,工作原理, FtpClient,上傳下載 引言 目前, FTP服務已經(jīng)是網(wǎng)絡上廣泛使用的一種服務了,它是建立在 FTP協(xié)議上的用于網(wǎng)絡環(huán)境下進行文件傳輸?shù)囊环N文件傳輸系統(tǒng) ,幾乎可以傳輸各種類 型的文件,如文本文件,聲音文件,圖像文件等。一個文件傳輸系統(tǒng)有服務器端 程序和客戶端程序共同組成的 ,客戶端程序提供用戶操作的界面并完成文件的上 傳和下載。在網(wǎng)絡應用中, 有著非常重要的地位,在 Internet中一個十分重 要的就是資源,而各種各樣的資源大多數(shù) 都是 放在 FTP服務器中的, 為了 獲這些資源, 我們必須使用 FTP客戶端軟件。目前 流行的有 cuteFT, WS_FTP,ByteCatcher, Pe等。 為了 方便用戶的使用,本文 將介紹一種 基于 的 FTP客戶端程序的設計 與實現(xiàn)。 本文首先分析了FTP協(xié)議,F(xiàn)TP的工作原理等,然后介紹了如何使用Java工具來設計和實現(xiàn)一個簡單的FTP客戶端。使用本FTP客戶端,可以使用戶輕松的下載、上傳網(wǎng)絡資源。FTP協(xié)議分 析FTP的工作原理 FT(l,是文件傳輸協(xié)議的 。用于 t上的 控制 文件的 雙向 傳輸 。同 時 ,它 也 是一個應用程序 。用戶可以 通過 它 把自己機 器 世界各地 所 有 運 行 FTP協(xié)議的服務器 相連 , 訪問 服務器上的資源和 信息 。FTP協(xié)議在 TCP/IP協(xié)議棧中的位置如表 1:表 1TCP/IP協(xié)議棧 HTTPHTTPFTPTELNSMTPDNSTFTPNMP應用層 TCPUDP傳輸層 IP互聯(lián)網(wǎng)絡層 X25ISDN LAN WLANFDDI ATM網(wǎng)絡接口層 當啟動FTP從遠程計算機拷貝文件時,事實上啟動了兩個程序:一個本地機器上的FTP客戶端程序,它向FTP服務器提出拷貝文件的請求。另一個是啟動在遠程計算機的上的FTP服務器程序,它響應請求把你指定的文件傳送到你的計算機中。FTP采用“客戶端/服務器”方式,用戶要在自己的本地計算機上安裝客戶端程序。從根本上說,協(xié)議就是在網(wǎng)絡中各種不同的計算機之間按照 協(xié)議來傳輸文件。 協(xié)議采用客戶端 /服務器 模式,由 客戶端 程序和 服務器端程序組成。使用時,先啟動 客戶端程序與遠程主機建 立連接 ,然后向遠程主機發(fā)出傳輸命令, 遠程主機在收到命令后就給予響應, 并執(zhí)行正確的命令。但是 有一個根本的限制,那就是,如果用戶在某個主機 上沒有注冊獲得 ,沒有用戶 和口令,就不 與 主機 行文件傳輸。 但名服務器 除外,它 能夠使用戶與遠程主機建立連接并 以匿名身份從遠程 主機上拷貝文件, 而不 必是 該遠程主機的注冊用戶。用戶使用 特殊的用戶 “ Anonymous “ ”就 有限制地 遠程主機上 的文件。 在 系統(tǒng)要求用戶 將Emai1地 址作為 口令 ,以便更好 地 對 訪問者 進行 跟綜 。出 于 安 全的目的,大部分匿名FTP主機一般只允許遠程用戶下載文件,而不允許上載文件。也就是說,用戶只能從匿名FTP主機拷貝其需要的文件而不能把文件拷貝到匿名FTP主機。另外,匿名FTP主機還采用了其他一些保護措施以保護自己的文件不至于被用戶修改和刪除,并防止計算機病毒的侵入。匿名FTP一直是Internet上獲取信息資源的最主要方式,在Internet成千上萬的匿名FTP主機中存儲著無以計數(shù)的文件,這些文件包含了各種各樣的信息、數(shù)據(jù)和軟件。人們只要知道特定信息資源的主機地址,就可以用匿名FTP登陸。FTP工作模式FTP采用C/S(客戶端/服務器)模式進行通信,但與其他的C/S模式網(wǎng)絡通信協(xié)議又有一個很大的區(qū)別。通常在進行HTTP通信或是TELNET通信的時候,只需要一個端口進行通信。即客戶端只需要連接一個端口進行數(shù)據(jù)通信。如TELNET的端是23,用戶從到只需用這端。但是FTP通信除了一端口21之外,還需要其他的端。其中端(21)主要進行控制連接,進行命令協(xié)議和服務器端的響應碼的傳輸;另外一個非標準端口主要進行數(shù)據(jù)傳遞,如文件的上載、下載等。至于非標準端口的產(chǎn)生則要根據(jù)用戶選擇的模式而定:如果客戶選擇的是主動模式(PORT),則需要用戶端提供給服務器一P地址和一非標準端;而果用戶采用被動模式(V),則服務器端需要提供給客戶端一IP地址和一個非標準端口。下表是幾個著名的TCP端口號:表 2TCP端 口號TCPTCP端 口號關(guān)鍵字 描述 20FTP-DATA文件 傳輸 協(xié)議數(shù)據(jù) 2121FTP23TELENET25SMTP53DOMAIN80HTTP110POP3119NNTPFTP中字節(jié)大小有兩個:邏輯字節(jié)大小和用于傳輸?shù)淖止?jié)大小。后者通常是 8位 ,而前者可不一定是多少了。傳輸字節(jié)不必等于邏輯字節(jié)大小,也不必對數(shù)據(jù)結(jié)構(gòu)進行解釋??刂七B接是建立在 USER-PIT和 SERVER-PI之間用于交換命令與應答的通信鏈路。數(shù)據(jù)連接是傳輸數(shù)據(jù)的全雙工連接,傳輸數(shù)據(jù)可以發(fā)生在服務器 DTP和用戶 DTP之間也可以發(fā)生在兩個服務器 DTP之間,F(xiàn)TP可以傳輸非連續(xù)的文件,這些文件的一部分稱為頁。服務器 DTP代表一種傳輸過程,它通常處于“主動”狀態(tài),它和偵聽端口建立數(shù)據(jù)連接,它還可以為傳輸和存儲設置參數(shù),并根據(jù) PI的指令傳輸數(shù)據(jù)。當然,DTP也可以轉(zhuǎn)入“被動”狀態(tài)。服務器 進程,它是和用戶 進程一工的,它由PI和 DTP組成至于用戶 FTP進程則是由PI,DTP和用戶接口組成的。具體工作模式如圖1所示:FTP請求FTPFTP響應 a用戶接口用戶數(shù)據(jù)連接 系統(tǒng)服務器bb2件傳輸系統(tǒng)服務器 -FTP 用戶— 圖 1FTP工作模式圖 上圖中用戶PI開始控制連接,控制連接與Telnet協(xié)議很象。在開始階段,標準FTP命令由用戶PI產(chǎn)生并通過控制連接傳送到服務器進程。服務器PI向用戶PI返回標準應答。FTP命令指定數(shù)據(jù)連接參數(shù)和文件系統(tǒng)操作。用戶DTP在特定數(shù)據(jù)端口偵聽,服務器開始數(shù)據(jù)連接并以指定的參數(shù)開始數(shù)據(jù)傳輸。數(shù)據(jù)端口不必在開始FTP命令的機器上,但用戶或用戶FTP進程必須確定它在指定的數(shù)據(jù)端口上偵聽.這個數(shù)據(jù)連接是全雙工的。FTP傳輸模式FTP協(xié)議的任務是從一臺計算機將文件傳送到另一臺計算機,它與這兩臺計算機所處的位置、聯(lián)接的方式、甚至是是否使用相同的操作系統(tǒng)無關(guān)。假設兩臺計算機通過p協(xié)議對話,并且能訪問t,你可以用p命令來傳輸文件。每種操作系統(tǒng)使用上有某一些細微差別,但是每種協(xié)議基本的命令結(jié)構(gòu)是相同的。 FTP的傳輸有兩種方式: ASCII傳輸模式和二進制數(shù)據(jù)傳輸模式。 ASCII傳輸方式假定用戶正在拷貝的文件包含的簡單ASCII碼文本,如果在遠程機器上運行的不是X,當文件傳輸時p通常會自動地調(diào)整文件的內(nèi)容以便于把文件解釋成另外那臺計算機存儲文本文件的格式。但是常常有這樣的情況,用戶正在傳輸?shù)奈募牟皇俏谋疚募鼈兛赡苁浅绦颍瑪?shù)據(jù)庫,字處理文件或者壓縮文件(盡管字處理文件包含的大部分是文本,其中也包含有指示頁尺寸,字庫等信息的非打印字符)。在拷貝任何非文本文件之前,用binary命令告訴ftp逐字拷貝,不要對這些文件進行處理。二進制傳輸方式在二進制傳輸中,保存文件的位序,以便原 始和拷貝的是逐位 一一對 應的。 即使目的地機器上包含位序 列的文件是 沒意義的。 例如, macintosh以二進制方 式傳 送可 執(zhí)行文件 到Windows系統(tǒng),在對方 系統(tǒng)上, 此文件不能 執(zhí)行。如果 你在 ASCII方式 下傳輸二進制文件 ,即使不 需要也 仍會 轉(zhuǎn)譯。這會 使傳輸 稍微變慢,也會 損壞數(shù)據(jù) ,使文件 變得不能用 。如果 你知道這兩臺機器是 同 樣的 ,則二進制方式對文本文件和數(shù)據(jù)文件都是有效的。FTP客 戶 端總體設 計設計目的及工具選設計目的FTP早已應用在網(wǎng)絡的各個方面,比如我們在訪問網(wǎng)絡上的資源時,經(jīng)常會遇到需要連接FTP服務器來下載,或者你制作了一個網(wǎng)站,想要將其上傳至服務器,讓大家能夠訪問它,這個時候就會用到FTP客戶端。雖然平時使用windows自帶的 IE瀏覽器即可實現(xiàn)對 FTP服務器的訪問 ,但是 IE只是個很粗糙 的 FTP客戶端 。IE瀏覽器在 6.0以下的版本不支持 PASV方式訪問服務器 ,而且 IE瀏覽器在登錄 FTP服務器的時候,無法查看返回的信息,在出錯的時候,無 法找到錯誤的原因,因此在使用上很不方便?,F(xiàn)在大多數(shù)的 FTP客戶端軟件都 是收費版的,而且以英文版居多,使用上操作很復雜,目前流行的有 CoreFtp、AceFtp、FtpVoyager等,但是大多數(shù)用戶并不習慣使用這些軟件。本文所設計的 FTP客戶端則適合大多數(shù)用戶使用,界面設計的很簡單,使用戶可以一目了然, 而且具備 FTP客戶端的基本功能,可以作為下載、上傳文件的工具來使用。 設計工具 程序設計中用到的主要工具就是Java,a是N公司開發(fā)的一種面向?qū)ο蟮男乱淮W(wǎng)絡編程語言,它可以在各種不同的機器、操作系統(tǒng)的網(wǎng)絡環(huán)境中進行開發(fā),具有BasicC的特性。JavaC++中各種弊大于利的功能和許多很少用到的功能,用Java開發(fā)的程序可以在網(wǎng)絡上傳輸,并運行于任何客戶機上。使用Java語言可以方便的設計出網(wǎng)絡應用類的程序,而且Java的移植性很好,在、其應用程序在各種機器上都能無差別的執(zhí)行為了使FTP客戶端能適應大多數(shù)平臺下的使用,我選擇使用Java語言來實現(xiàn)。ftpclient類Java類庫的存在使它適合于一個不斷發(fā)展的環(huán)境。在類庫中我們可以自由地加入新的方法和實例變量而不會影響用戶程序的執(zhí)行。并且Java通過接口來支持多重繼承,使其比嚴格的類繼承具有更靈活的方式和擴展性。在處理復雜事物的時候,用到的一種基本手段就是抽象。抽象的目的就是區(qū)別事物之間的本質(zhì)和不同,面向?qū)ο缶幊蹋≒)的實質(zhì)就是利用類和對象來建立抽象模型。類表示了對象的類別,是創(chuàng)建對象的藍本。建立一個事物的抽象模型,本質(zhì)上就是表達該事物的性質(zhì)和行為。使用類來建立抽象模型,是通過在類中定義變量和方法來實現(xiàn)的。類中定義的屬性是一種可存儲值的變量,該變量代表著事物的具體性質(zhì)。在 J2SE中提供了與客戶端編程有關(guān)的 Api,它就是 t類, 類封裝了 FTP協(xié)議的相關(guān)指令與實現(xiàn)細節(jié),提供了一系列的方法,這 些方法涵蓋了幾乎所有 ftp的功能使用 FtpClient類設計 FTP客戶端程序可以讓編 程人員輕松地實現(xiàn)登錄遠程 FTP服務器、瀏覽服務器上的目錄、設置傳輸協(xié)議、 上傳文件和下載文件等功能。 本 文 所 使 用 的 類 的 構(gòu) 造 方 法 和 主 要 方 法 如 下 :1.PublicFtpClient(Stringhostname)構(gòu)造 利用 的主 建立一 條FTP,使用 端 這個方法用 建立一 與指定主 上的 FTP服務器的 ,使用 端 , 此方法利用參數(shù)username和password登錄到FTP服務器。使用過Internet的用戶應該知道,匿名FTP服務器的登錄用戶名為anonymous,密碼一般用自己的電子郵件地址。Publicvoidbinary():該命令可把傳輸格式設置為二進制格式??蛻舳斯δ苣KFTP客戶端作為用戶連接FTP服務器的工具,需要具備一些基本功能模塊,如連接、上傳、下載等,其中最主要的三大功能模塊如下:1、下載功能模塊:連接用戶指定的 FTP服務器,獲取服務器目錄下的文件列表,當用戶選擇項目為文件時,點擊下載可以下載用戶所需要的文件。選定文件后提示用戶將文件存儲在何處,用戶選擇存儲區(qū)后開始下載任務。依靠 FTP協(xié)議的支持,用戶下載的文件沒有類型和大小限制,即用戶可已選擇任何自己想要下載的文件,通過 FTP客戶端進行下載。2FTP服務器。文件上傳至服務器。3、連接功能模塊:將用戶本機與指定的 IP地址連接,驗證用戶命和密碼,在FTP服務器上進行注冊。有了這三個基本的功能模塊,客戶端的基本應用功能即可實現(xiàn)??蛻舳私缑嬖O計為了使用戶能夠方便的使用FTP僅包含主窗口窗口分別五個界面:1、數(shù)據(jù)輸入界面:用來讓用戶輸入服務器地址,用戶名,密碼。2主來清楚的了解服務器中存儲了哪些文件。3、上下載隊列顯示界面:顯示正在下載或上傳的文件線程。4操作按鈕斷關(guān)閉等按鈕來戶端的具體操作。5、信息顯示界面:顯示當前 連接信息和上傳下載是否成 功信息。這五個界面可以使用 eclipse工具下的 swing控件來實現(xiàn),在布局時,將界面內(nèi)的各個元素整合在一個框架中。設計的主界面如圖 2:圖 2客戶端界面數(shù)據(jù)流程圖客戶端連接流程圖運行客戶端后,首先是連接服務器,需要輸入服務器 IP地址及用戶名和密碼點擊連接按鈕后開始連接服務器。下圖為客戶端連接流程圖。發(fā)送用戶名及密碼至服務器是功件列表否刷新件件列表圖 3客戶端連接流程圖連接的結(jié)果有兩種,即圖中顯示的連接失敗和連接成功。上傳子模塊流程圖當用戶點擊上傳按鈕后,用戶可以選擇需要上傳的文件,并指定上傳位置,將本機上的文件上傳至 FTP服務器。下圖為上傳子模塊流程圖。名一個任務登錄到FTP目錄下是否成功
顯示成功重新獲取服 務器文件列表否 更服務器列表顯示失敗
清除線程 圖 4上傳模塊流程圖上傳的結(jié)果有兩種,上傳失敗和成功,失敗時會提示用戶上傳失敗,原因可能是權(quán)限,如果成功上傳,則提示上傳成功。下載子模塊流程圖當用戶在服務器文件列表中選擇想要下載的文件后,選擇需要下載文件在本機上的存儲位置,將服務器上的文件下載至本機。下圖為上傳子模塊流程圖。下載的文件點擊下載按鈕選擇文件在本機存儲位置 獲取文件信息將信息傳送至任務 新建下載任務登錄到FTP目錄下是下載是否成功
彈出對話框顯示下載成功重新獲取服務器文 件列表 更新服務器文件列表否彈出對話框顯示下載失敗
清除線程 圖 5下載模塊流程圖FTP客戶端程序?qū)崿F(xiàn) 數(shù)據(jù)輸入界面詳細設計該界面用來記錄用來輸入服務器的站點,用戶名和密碼信息,然后將信息發(fā)送到服務器進行驗證,利用 Jtextfiled構(gòu)件來實現(xiàn)??蛻舳艘还灿? 4個文本輸入框,分別為服務器地址輸入框 l,用戶名輸入框 username,密碼輸入框 d和端口號 port。在程序運行時,用戶在輸入框 url中輸入的 FTP服務器站點、用戶在輸入框 username中輸入的用戶名、用戶在輸入框 password中輸入密碼,用戶在端口號輸入框 port中輸入端口號。利用 getTEXT()函數(shù)獲取輸入框中的數(shù)據(jù),將 url中的數(shù)據(jù)存儲至 ip中,將 username中的數(shù)據(jù)存儲至 username中如果用戶沒有在 username中輸入數(shù)據(jù),則默認為用戶使用匿名方式登錄,將用戶名設置為 designpattern, d中的數(shù)據(jù)則存儲至 password,如 果 用 戶 沒 有 在password中輸 入 數(shù) 據(jù) , 則 默認設置為designpattern。JTextField類的定義:JTextFieldurl=newJTextField();服務器 IP輸入框JTextFieldusername=newJTextField();用戶名輸入框JTextFieldpassword=newJTextField();密碼輸入框JTextFieldport=newJTextField();端口號輸入框服務器文件信息顯示界面詳細設計該界面的作用是是顯示服務器文件列表,利用 Jscrollpane構(gòu)件來實現(xiàn)。在客戶 端主界面創(chuàng)建一個 Jscrollpane,命名為 1,并置于主界面中間,該表格包括三個數(shù)據(jù)項:文件名 e,文件大小 s,修改日期 s,使用 一個二維數(shù)組 mydata來存儲這三個數(shù)據(jù)。當客戶端連接上服務器時,表格數(shù)據(jù) 自動更新 ,主要功能使用 setTableData()函數(shù)實現(xiàn) 。當服務器連接時首先清除文件 列表信息 ,利用 removeAllElements()函數(shù)實現(xiàn) ,然后切換到當前目錄 ,使用 ftpClient類中的 cd命令實現(xiàn),再使用 list命令前目錄下的數(shù)據(jù)、包括目錄和文件名。 JScrollPane類的定義: JScrollPaneftpFileScrollPane1=newJScrollPane(ftpFileInfosTable);上下載隊列顯示界面和信息顯示界面詳細設計 這兩個模塊是信息顯示模塊 ,使用 JScrollPane和 JTextArea構(gòu)件實現(xiàn) 。其中 taskScrollPan顯示上傳下載進程信息 ,consoleScrollPane顯示連進程開始 或 結(jié)束 信 息 , 將 信 息 顯示 的 文 本 域 consoleTextArea放在 滾 動條 面 板consoleScrollPane中,并且設置為不可編輯。當客 戶 端 連 接 成 功 或 失敗,上傳文件或下載文件時,利用函數(shù)taskScrollPane.append()和consoleTextArea.append()在相應的區(qū)域顯示任務信息。JScrollPane類的定義: JScrollPanetaskScrollPane=newJScrollPane(taskList);JScrollPaneconsoleScrollPane=newJScrollPane(consoleTextArea);操作 按鈕模塊詳細設計 操作 按鈕使用 JButton構(gòu)件實現(xiàn),客戶端 共有連接、上傳、下載、 斷開、 關(guān)閉、上一級目錄刷新重命名 8個操作按鈕分別命名為 connectButtoncloseButtonrefreshButton、deleteButton 、 downloadButton、 uploadButtonrenameButton、upDirButton。JButton類的定義:privateJButtonconnectButton=newJButton("連接");privateJButtoncloseButton=newJButton("斷開連接");privateJButtonrefreshButton=newJButton("刷新");privateJButtondeleteButton =newJButton("刪除");privateJButtondownloadButton =newJButton("下載");privateJButtonuploadButton =newJButton("上傳");privateJButtonrenameButton= newJButton("重命名");privateJButtonupDirButton=newJButton("上級目錄");connectButton.addActionListener()...connectButton.addActionListener()...uploadButton.addActionListener(newActionListener()...上傳:uploadButton.addActionListener(newActionListener()...下載:downloadButton.addActionListener(newActionListener()...刪除:deleteButton.addActionListener(newActionListener()...closeButton.addActionListener(newActionListener()...斷開:closeButton.addActionListener(newActionListener()...上一級目錄:upDirButton.addActionListener(newActionListener()...刷新:refreshButton.addActionListener(newActionListener()...刷新:refreshButton.addActionListener(newActionListener()...重命名:renameButton.addActionListener(newActionListener()...各按鈕在定義各自的響應后,用戶在點擊這些按鈕時,會做出相應的處理,啟動對應的進程。功能模塊實現(xiàn)連接服務器客戶端中FtpBean類中connect方法用來實現(xiàn)連接服務器功能,在Java中實現(xiàn)這一功能是借助FtpClient類完成的,首先是使用FtpClient類的openServer(stringserver)方法打開遠程FTP服務器,然后使用FtpClient類的login(userpassword)方法登錄服務器。登錄遠程FTP器的注冊用戶名和密碼,匿名方式則是以designpattern作為用戶名來登錄。類ftpClient提供了如下兩個可用于打開與FTP服務器之間的連接的方法openServer(Stringhostname用默認端口號:21
于建立一條與指定主機上的FTP服務器的連接,使connect(Stringdir,Stringhostname,intport,Stringusername,Stringpasswd)用于建FTP4ipusernameport,password則顯示連接失敗。上傳文件FtpBeanuploadFileFTPftpClient類的openServer()方法和login(把傳輸格式設置為二進制格式,將本地文件上傳至FTP服務器。上傳結(jié)束后利用ftpClient.closeServer()函數(shù)斷開,并更新數(shù)據(jù)表格和FTP敗。上傳的具體代碼見附錄。下載文件FtpBeandownloadFileftpClientopenServer(ftpClient.get(ftpClient.closeServer()關(guān)閉顯示下載出錯。下載的具體代碼見附錄。功能運行測試為了驗證程序是否能正常運行我選擇連接 IP為 29的 服務器來。為 。首先是服務器連接的證:在服務器地中輸入29,在用戶名中輸入designpattern,在密碼欄中輸入designpattern,點擊連接按鈕后,出現(xiàn)結(jié)果如下圖 :結(jié)果顯示連接功能實現(xiàn),服務器文件信息列表中顯示了ip為29的FTP服務器下的文件夾列表,信息顯示中顯示了正確的連接信息。然后是下載文件功能的測試,選擇程序設計模式封頁.doc文件,點擊下載選擇保存至D盤,如圖:繼續(xù)點擊保存按鈕,下載任務中成功添加下載任務,文件下載完后,如圖:最后是上傳功能測試。先在本機上創(chuàng)建一個名叫“程序設計模式封頁c”的文件,選擇上傳至跟目錄下,點擊上傳,顯示如圖:為了驗證是否真的上傳至 FTP服務器,我用網(wǎng)上鄰居訪問了 IP為 29的 FTP服務器,結(jié)果如圖:文件確實上傳成功。至此,功能驗證已經(jīng)完畢! .結(jié)語FTP的目標是提高文件的共享性和可靠高效地傳送數(shù)據(jù),而FTP客戶端的作用是使用戶方便的連接和訪問FTP服務器。本文實現(xiàn)了一個簡單易用的FTP客戶端,在分析FTP協(xié)議的基本工作原理和FTP的數(shù)據(jù)傳輸原理的基礎上,詳細介紹了如何使用Java工具對FTP客戶端進行設計,選擇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)上顯得更加簡捷靈活,并具有較好的可擴充性和可移植性,在本文中使用的方法也是比較便捷和高效的。參考文獻楊錫林、張燕等.Java編程高手北京大學出版社,年12月第一版~葉新銘等譯.計算機網(wǎng)絡(原書第二版)機械工業(yè)出版社,2001年月 端到端協(xié)議242-283.夏先波等.JAVA+JDK實例開發(fā)寶典電子工業(yè)出版社,2001年第一版:第13章網(wǎng)絡編程~..:,5,7~葉俊民.軟件工程.清華大學出版社,2006年6月第一版:第章.軟件需求分析基礎~n,,,核心技術(shù)機械工業(yè)出版社,年3月第一版:第章高級~楊淑萍 基于 Java的 FTP客戶端程序的設計與實現(xiàn) .現(xiàn)代計算機 .謝希仁 計算機網(wǎng)絡(第五版) 電子工業(yè)出版社 附錄 :程序源碼 ,主要核心代碼:FTPFrame.javapublicvoidconnect()//連接FTP服務器{String s=ftp.connect("/", url.getText().toString(), username.getText().toString(),password.getText().toString());status.setText(s);update();if(s.equals("Success")){}else{}}
time=newDate();out.println(time+"登陸服務器:"+url.getText());connectButton.setEnabled(false);closeButton.setEnabled(true);(null,connectButton.setEnabled(true);closeButton.setEnabled(false);publicvoiduploadFile()//上傳文件{JFileChooserfDialog=newJFileChooser(); //文件選擇器intresult=fDialog.showOpenDialog(null);i.APPROVE_OPTIO){Stringfile=fDialog.getSelectedFile().toString();StringtargetFile=newString();StringTokenizerst=newStringTokenizer(file,"\\"); //拆分文件名while(st.hasMoreTokens()){targetFile=st.nextToken();}booleanb=ftp.uploadFile(file,targetFile);if(b==true){update();status.setText("上傳文件"+targetFile+"成功");(null,上傳文件+成功);time=newDate();}else{}}}
out.println(time+"上傳文件:"+targetFile+"成功");status.setText("上傳文件"+targetFile+"失敗");(null,上傳文件+失敗);out.println(time+"上傳文件:"+targetFile+"失敗");publicvoiddownloadFile()//下載文件{if(!fileList.isSelectionEmpty()){StringtargetFile=fileList.getSelectedValue().toString();//獲取所選擇的文件JFileChooserfDialog=newJFileChooser(); //文件選擇器intresult=fDialog.showOpenDialog(null);i.APPROVE_OPTIO){}else{
ftp.downloadFile(targetFile,fDialog.getSelectedFile().toString());update();status.setText("下載文件"+targetFile+"成功");JOptionPaneshowMessageDialo(null,下載文件+"成功);time=newDate();out.println(time+"下載文件:"+targetFile);}(null,請選擇所要下載的文件);}}publicvoidclose(){//關(guān)閉連接Strings=ftp.close();status.setText(s);m.removeAllElements();time=newDate();out.println(time+"離開服務器:"+url.getText());out.close();connectButton.setEnabled(true);closeButton.setEnabled(false);}FtpBean.jav
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年城市照明項目LED路燈購銷合同
- 2024年建筑工程分包協(xié)議書
- 2024年云計算服務互操作性測試合同
- 2024廣告發(fā)布委托合同模板樣本
- 2024年工程質(zhì)量檢測合同標準
- 2024年度物業(yè)服務合同:日常房屋租住過程中的管理與維護
- 2024年度旅游開發(fā)項目合同
- 2024年度影視制作與發(fā)布協(xié)議
- 兒子結(jié)婚上父親致辭
- 習慣為主題的演講稿3篇
- 2024年秋新華師大版七年級上冊數(shù)學 2.4.3去括號和添括號 教學課件
- 【論述土木工程的信息化建設應用8600字(論文)】
- 北師大版(三起)(2024)三年級上冊英語Unit 5單元測試卷(含答案)
- 2024年初級銀行從業(yè)資格《個人理財》考試試題
- 公司資金調(diào)撥及內(nèi)部往來管理流程手冊模板
- 尊干愛兵課件2017
- 流程圖練習題(三種結(jié)構(gòu))
- 消防監(jiān)控服務合同范本
- 2024-2030年中國模架租賃行業(yè)市場發(fā)展現(xiàn)狀及投資策略咨詢報告
- 修回稿修改說明
- 病原微生物實驗室生物安全管理培訓考核試題
評論
0/150
提交評論