FTP客戶端設計與實現_第1頁
FTP客戶端設計與實現_第2頁
FTP客戶端設計與實現_第3頁
FTP客戶端設計與實現_第4頁
FTP客戶端設計與實現_第5頁
已閱讀5頁,還剩25頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、 目錄摘要.2關鍵詞.21.引言.22.FTP協議分析.2 2.1FTP工作原理.2 2.2FTP工作模式.4 2.3FTP傳輸模式.6 2.3.1ASCII傳輸方式.6 2.3.2二進制傳輸方式.63.FTP客戶端的總體設計.6 3.1設計目的及工具的選擇.6 3.1.1設計目的.6 3.1.2設計工具.7 3.1.3FtpClient類.7 3.2客戶端主要模塊設計.7 3.2.1客戶端功能模塊.8 3.2.2客戶端界面設計.9 3.3數據流程圖.9 3.3.1客戶端連接流程圖.9 3.3.2上傳子模塊流程圖.11 3.3.3下載子模塊流程圖.124.FTP客戶端程序實現.14 4.1客戶

2、端顯示界面實現.14 4.1.1數據輸入界面詳細設計.14 4.1.2服務器文件信息顯示界面詳細設計.14 4.1.3上下載隊列顯示界面和信息顯示界面詳細設計.15 4.1.4操作按鈕模塊詳細設計.15 4.2功能模塊實現.16 4.2.1連接服務器.16 4.2.2上傳文件.16 4.2.3下載文件.175. 功能運行測試.176.結語.20參考文獻.21附錄.22FTP客戶端的設計與實現摘要:FTP是Internet上用來傳送文件的協議。它是為了我們能夠在Internet上互相傳送文件而制定的文件傳送標準,規定了Internet上文件如何傳送。通過FTP協議,我們就可以跟Internet上

3、的FTP服務器進行文件的上傳或下載。本文以實現一個簡單易用的FTP客戶端為目標,通過分析FTP協議的基本工作原理和FTP的數據傳輸原理,研究如何使用Java工具對FTP客戶端進行設計,選擇Java類庫中的FtpClient類來實現FTP客戶端程序的上傳下載等主要功能,并用eclipse軟件提供的一個支持可視化編程的開發環境,從而實現了對FTP客戶端的開發。關鍵詞:FTP協議 ,工作原理,FtpClient,上傳下載引言 目前,FTP服務已經是網絡上廣泛使用的一種服務了,它是建立在FTP協議上的用于網絡環境下進行文件傳輸的一種文件傳輸系統,幾乎可以傳輸各種類型的文件,如文本文件,聲音文件,圖像文

4、件等。一個文件傳輸系統有服務器端程序和客戶端程序共同組成的,客戶端程序提供用戶操作的界面并完成文件的上傳和下載。在網絡應用中,FTP有著非常重要的地位,在Internet中一個十分重要的就是資源,而各種各樣的資源大多數都是放在FTP服務器中的,為了獲得這些資源,我們必須使用FTP客戶端軟件。目前流行的有cuteFTP,WS_FTP,ByteCatcher,FTP Voyage等。為了方便用戶的使用,本文將介紹一種基于Java的FTP客戶端程序的設計與實現。 本文首先分析了FTP協議,FTP的工作原理等,然后介紹了如何使用Java工具來設計和實現一個簡單的FTP客戶端。使用本FTP客戶端,可以使

5、用戶輕松的下載、上傳網絡資源。2. FTP協議分析 2.1FTP的工作原理 FTP(FileTransferProtocol),是文件傳輸協議的簡稱。用于Internet上的控制文件的雙向傳輸。同時,它也是一個應用程序。用戶可以通過它把自己機器與世界各地所有運行FTP協議的服務器相連,訪問服務器上的資源和信息。FTP協議在TCP/IP協議棧中的位置如表1: 表1 TCP/IP協議棧HTTP FTP TELN SMTP DNS TFTP NMP 應用層 TCP UDP 傳輸層 IP 互聯網絡層 X25 ISDN LAN WLAN FDDI ATM 網絡接口層 當啟動FTP從遠程計算機拷貝文件時,

6、事實上啟動了兩個程序:一個本地機器上的FTP客戶端程序,它向FTP服務器提出拷貝文件的請求。另一個是啟動在遠程計算機的上的FTP服務器程序,它響應請求把你指定的文件傳送到你的計算機中。FTP采 用“客戶端/服務器”方式,用戶要在自己的本地計算機上安裝FTP客戶端程序。 從根本上說,FTP協議就是在網絡中各種不同的計算機之間按照TCP/IP協議來傳輸文件。FTP協議采用客戶端/服務器(Client/Sever)模式,由FTP客戶端程序和FTP服務器端程序組成。使用時,先啟動FTP客戶端程序與遠程主機建立連接,然后向遠程主機發出傳輸命令,遠程主機在收到命令后就給予響應,并執行正確的命令。但是FTP

7、有一個根本的限制,那就是,如果用戶在某個主機上沒有注冊獲得授權,即沒有用戶名和口令,就不能與該主機進行文件傳輸。但匿名FTP服務器除外,它能夠使用戶與遠程主機建立連接并以匿名身份從遠程主機上拷貝文件,而不必是該遠程主機的注冊用戶。用戶使用特殊的用戶名“Anonymous”或“guest”就可有限制地訪問遠程主機上公開的文件。現在許多系統要求用戶將Emai1地址作為口令,以便更好地對訪問者進行跟綜。出于安全的目的,大部分匿名FTP主機一般只允許遠程用戶下載文件,而不允許上載文件。也就是說,用戶只能從匿名FTP主機拷貝其需要的文件而不能把文件拷貝到匿名FTP主機。另外,匿名FTP主機還采用了其他一

8、些保護措施以保護自己的文件不至于被用戶修改和刪除,并防止計算機病毒的侵入。匿名FTP一直是Internet上獲取信息資源的最主要方式,在Internet成千上萬的匿名FTP主機中存儲著無以計數的文件,這些文件包含了各種各樣的信息、數據和軟件。人們只要知道特定信息資源的主機地址,就可以用匿名FTP登陸。2.2 FTP工作模式FTP采用C/S(客戶端/服務器)模式進行通信,但與其他的C/S模式網絡通信協議又有一個很大的區別。通常在進行HTTP通信或是TELNET通信的時候,只需要一個端口進行通信。即客戶端只需要連接一個端口進行數據通信。如TELNET的默認端口是23,用戶從頭到尾都只需使用這個端口

9、。但是FTP通信除了有一個默認端口21之外,還需要其他的端口。其中默認端口(21)主要進行控制連接,進行命令協議和服務器端的響應碼的傳輸;另外一個非標準端口主要進行數據傳遞,如文件的上載、下載等。至于非標準端口的產生則要根據用戶選擇的連接模式而定:如果客戶選擇的是主動模式(PORT),則需要用戶端提供給服務器一個IP地址和一個非標準端口;而如果用戶采用被動模式(PASV),則服務器端需要提供給客戶端一個IP地址和一個非標準端口。下表是幾個著名的TCP端口號: 表2 TCP端口號TCP端口號 關鍵字 描述 20 FTP-DATA 文件傳輸協議數據 21 FTP 文件傳輸協議控制 23 TELEN

10、ET 遠程登錄協議 25 SMTP 簡單郵件傳輸協議 53 DOMAIN 域名服務器 80 HTTP 超文本傳輸協議 110 POP3 郵局協議 119 NNTP 新聞傳送協議 FTP中字節大小有兩個:邏輯字節大小和用于傳輸的字節大小。后者通常是8位 ,而前者可不一定是多少了。傳輸字節不必等于邏輯字節大小,也不必對數據結構進行解釋。控制連接是建立在USER-PIT和SERVER-PI之間用于交換命令與應答的通信鏈路。數據連接是傳輸數據的全雙工連接,傳輸數據可以發生在服務器DTP和用戶DTP之間也可以發生在兩個服務器DTP之間,FTP可以傳輸非連續的文件,這些文件的一部分稱為頁。服務器DTP代表

11、一種傳輸過程,它通常處于“主動”狀態,它和偵聽端口建立數據連接,它還可以為傳輸和存儲設置參數,并根據PI的指令傳輸數據。當然,DTP也可以轉入“被動”狀態。服務器FTP進程,它是和用戶FTP進程一起工作的,它由PI和DTP組成。至于用戶FTP進程則是由PI,DTP和用戶接口組成的。具體工作模式如圖1所示:FTP請求用戶用戶接口服務器aFTP響應用戶a1文件傳輸系統文件傳輸系統用戶b2數據連接服務器 b 服務器-FTP用戶FTP 圖1FTP工作模式圖 上圖中用戶PI開始控制連接,控制連接與Telnet協議很象。在開始階段,標準FTP命令由用戶PI產生并通過控制連接傳送到服務器進程。服務器PI向用

12、戶PI返回標準應答。FTP命令指定數據連接參數和文件系統操作。用戶DTP在特定數據端口偵聽,服務器開始數據連接并以指定的參數開始數據傳輸。數據端口不必在開始FTP命令的機器上,但用戶或用戶FTP進程必須確定它在指定的數據端口上偵聽.這個數據連接是全雙工的。 2.3FTP傳輸模式 FTP協議的任務是從一臺計算機將文件傳送到另一臺計算機,它與這兩臺計算機所處的位置、聯接的方式、甚至是是否使用相同的操作系統無關。假設兩臺計算機通過ftp協議對話,并且能訪問Internet,你可以用ftp命令來傳輸文件。每種操作系統使用上有某一些細微差別,但是每種協議基本的命令結構是相同的。FTP的傳輸有兩種方式:A

13、SCII傳輸模式和二進制數據傳輸模式。2.3.1 ASCII傳輸方式 假定用戶正在拷貝的文件包含的簡單ASCII碼文本,如果在遠程機器上運行的不是UNIX,當文件傳輸時ftp通常會自動地調整文件的內容以便于把文件解釋成另外那臺計算機存儲文本文件的格式。但是常常有這樣的情況,用戶正在傳輸的文件包含的不是文本文件,它們可能是程序,數據庫,字處理文件或者壓縮文件(盡管字處理文件包含的大部分是文本,其中也包含有指示頁尺寸,字庫等信息的非打印字符)。在拷貝任何非文本文件之前,用binary命令告訴ftp逐字拷貝,不要對這些文件進行處理。2.3.2二進制傳輸方式 在二進制傳輸中,保存文件的位序,以便原始和

14、拷貝的是逐位一一對應的。即使目的地機器上包含位序列的文件是沒意義的。例如,macintosh以二進制方式傳送可執行文件到Windows系統,在對方系統上,此文件不能執行。如果你在ASCII方式下傳輸二進制文件,即使不需要也仍會轉譯。這會使傳輸稍微變慢,也會損壞數據,使文件變得不能用。如果你知道這兩臺機器是同樣的,則二進制方式對文本文件和數據文件都是有效的。3 FTP客戶端總體設計3.1設計目的及工具選3.1.1 設計目的 FTP早已應用在網絡的各個方面,比如我們在訪問網絡上的資源時,經常會遇到需要連接FTP服務器來下載,或者你制作了一個網站,想要將其上傳至服務器,讓大家能夠訪問它,這個時候就會

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

16、作為下載、上傳文件的工具來使用。3.1.2 設計工具 程序設計中用到的主要工具就是Java,Java是SUN公司開發的一種面向對象的新一代網絡編程語言,它可以在各種不同的機器、操作系統的網絡環境中進行開發,具有解釋型語言(如Basic語言)和編譯型語言(如C語言)的特性。Java摒棄了C+中各種弊大于利的功能和許多很少用到的功能,用Java開發的程序可以在網絡上傳輸,并運行于任何客戶機上。使用Java語言可以方便的設計出網絡應用類的程序,而且Java的移植性很好,在 、其應用程序在各種機器上都能無差別的執行為了使FTP客戶端能適應大多數平臺下的使用,我選擇使用Java語言來實現。3.1.3 f

17、tpclient類 Java類庫的存在使它適合于一個不斷發展的環境。在類庫中我們可以自由地加入新的方法和實例變量而不會影響用戶程序的執行。并且Java通過接口來支持多重繼承,使其比嚴格的類繼承具有更靈活的方式和擴展性。在處理復雜事物的時候,用到的一種基本手段就是抽象。抽象的目的就是區別事物之間的本質和不同,面向對象編程(OOP)的實質就是利用類和對象來建立抽象模型。類表示了對象的類別,是創建對象的藍本。建立一個事物的抽象模型,本質上就是表達該事物的性質和行為。使用類來建立抽象模型,是通過在類中定義變量和方法來實現的。類中定義的屬性是一種可存儲值的變量,該變量代表著事物的具體性質。 在J2SE中

18、提供了與客戶端編程有關的Api,它就是.ftp.FtpClient類,FtpClient類封裝了FTP協議的相關指令與實現細節,提供了一系列的方法,這些方法涵蓋了幾乎所有ftp的功能使用FtpClient類設計FTP客戶端程序可以讓編程人員輕松地實現登錄遠程FTP服務器、瀏覽服務器上的目錄、設置傳輸協議、上傳文件和下載文件等功能。 本文所使用的FtpClient類的構造方法和主要方法如下:1.PublicFtpClient(Stringhostname)此構造函數利用給出的主機名建立一條FTP連接,使用默認端口號。2.PublicvoidopenServer(Stringhostname)這個

19、方法用于建立一條與指定主機上的FTP服務器的連接,使用默認端口號。3.Publicvoidlogin(Stringusername,Stringpassword)此方法利用參數username和password登錄到FTP服務器。使用過Internet的用戶應該知道,匿名FTP服務器的登錄用戶名為anonymous,密碼一般用自己的電子郵件地址。Publicvoidbinary():該命令可把傳輸格式設置為二進制格式。3.2.1客戶端功能模塊 FTP客戶端作為用戶連接FTP服務器的工具,需要具備一些基本功能模塊,如連接、上傳、下載等,其中最主要的三大功能模塊如下:1、下載功能模塊:連接用戶指定

20、的FTP服務器,獲取服務器目錄下的文件列表,當用戶選擇項目為文件時,點擊下載可以下載用戶所需要的文件。選定文件后提示用戶將文件存儲在何處,用戶選擇存儲區后開始下載任務。依靠FTP協議的支持,用戶下載的文件沒有類型和大小限制,即用戶可已選擇任何自己想要下載的文件,通過FTP客戶端進行下載。2、上傳功能模塊:用戶可以自行選擇本機上存儲的文件,上傳至FTP服務器。在用戶選擇存儲在服務器的位置后,點擊上傳,選擇所需要上傳的文件,即可將文件上傳至服務器。3、連接功能模塊:將用戶本機與指定的IP地址連接,驗證用戶命和密碼,在FTP服務器上進行注冊。有了這三個基本的功能模塊,客戶端的基本應用功能即可實現。3

21、.2.2客戶端界面設計 為了使用戶能夠方便的使用FTP客戶端,在設計中我將數據輸入和信息顯示整合在一個頁面中,全部客戶端僅包含一個主要的窗口,窗口中分別有以下五個界面:1、數據輸入界面:用來讓用戶輸入服務器地址,用戶名,密碼。2、服務器文件信息顯示界面:主要用來顯示服務器下存儲的文件,方便用戶清楚的了解服務器中存儲了哪些文件。3、上下載隊列顯示界面:顯示正在下載或上傳的文件線程。4、操作按鈕界面:用戶可以通過點擊上傳、下載、斷開、關閉等按鈕來實現客戶端的具體操作。5、信息顯示界面:顯示當前連接信息和上傳下載是否成功信息。這五個界面可以使用eclipse工具下的swing控件來實現,在布局時,將

22、界面內的各個元素整合在一個框架中。設計的主界面如圖2: 圖2 客戶端界面3.3數據流程圖3.3.1 客戶端連接流程圖運行客戶端后,首先是連接服務器,需要輸入服務器IP地址及用戶名和密碼點擊連接按鈕后開始連接服務器。下圖為客戶端連接流程圖。用戶輸入服務器地址及用戶名和密碼 連接服務器發送用戶名及密碼至服務器在信息顯示模塊顯示連接成功是否連接成功是獲取服務器文件列表否刷新服務器文件顯示文件列表在信息顯示模塊顯示連接失敗 圖3 客戶端連接流程圖連接的結果有兩種,即圖中顯示的連接失敗和連接成功。3.3.2 上傳子模塊流程圖 當用戶點擊上傳按鈕后,用戶可以選擇需要上傳的文件,并指定上傳位置,將本機上的文

23、件上傳至FTP服務器。下圖為上傳子模塊流程圖。點擊上傳按鈕彈出文件選擇對話框獲取用戶選擇的文件名新建一個上傳任務登錄到FTP服務器目標目錄下上傳是否成功彈出對話框顯示上傳成功是重新獲取服 務器文件列表更新服務器文件列表否 清除線程彈出對話框顯示上傳失敗 圖4 上傳模塊流程圖 上傳的結果有兩種,上傳失敗和成功,失敗時會提示用戶上傳失敗,原因可能是權限,如果成功上傳,則提示上傳成功。3.3.3 下載子模塊流程圖當用戶在服務器文件列表中選擇想要下載的文件后,選擇需要下載文件在本機上的存儲位置,將服務器上的文件下載至本機。下圖為上傳子模塊流程圖。選擇要下載的文件點擊下載按鈕選擇文件在本機存儲位置獲取文

24、件信息將信息傳送至任務新建下載任務登錄到FTP服務器目標目錄下下載是否成功彈出對話框顯示下載成功是重新獲取服務器文件列表更新服務器文件列表否彈出對話框顯示下載失敗清除線程圖5下載模塊流程圖4 FTP客戶端程序實現4.1.1數據輸入界面詳細設計該界面用來記錄用來輸入服務器的站點,用戶名和密碼信息,然后將信息發送到服務器進行驗證,利用Jtextfiled構件來實現。客戶端一共有4個文本輸入框,分別為服務器地址輸入框url,用戶名輸入框username,密碼輸入框password 和端口號port。在程序運行時,用戶在輸入框url中輸入的FTP服務器站點、用戶在輸入框username中輸入的用戶名、

25、用戶在輸入框password 中輸入密碼,用戶在端口號輸入框port中輸入端口號。利用getTEXT()函數獲取輸入框中的數據,將url中的數據存儲至ip 中,將username中的數據存儲至username中;如果用戶沒有在username中輸入數據,則默認為用戶使用匿名方式登錄,將用戶名設置為designpattern,password中的數據則存儲至password,如 果 用 戶 沒 有 在password 中輸 入 數 據 , 則 默 認 設 置 為designpattern。JTextField類的定義:JTextField url=new JTextField();服務器IP輸入

26、框JTextField username=new JTextField();用戶名輸入框JTextField password=new JTextField();密碼輸入框JTextField port=new JTextField();端口號輸入框4.1.2服務器文件信息顯示界面詳細設計該界面的作用是是顯示服務器文件列表,利用Jscrollpane構件來實現。在客戶端主界面創建一個Jscrollpane,命名為ftpFileScrollPane1,并置于主界面中間,該表格包括三個數據項:文件名file,文件大小filesizes,修改日期filedates,使用一個二維數組mydata來存儲

27、這三個數據。當客戶端連接上服務器時,表格數據自動更新,主要功能使用setTableData()函數實現。當服務器連接時首先清除文件列表信息,利用removeAllElements()函數實現,然后切換到當前目錄,使用ftpClient類中的cd命令實現,再使用list命令前目錄下的數據、包括目錄和文件名。JScrollPane類的定義:JScrollPane ftpFileScrollPane1=newJScrollPane(ftpFileInfosTable);4.1.3上下載隊列顯示界面和信息顯示界面詳細設計 這兩個模塊是信息顯示模塊,使用JScrollPane和JTextArea構件實現

28、。其中taskScrollPan顯示上傳下載進程信息,consoleScrollPane顯示連進程開始 或 結束 信 息 , 將 信 息 顯示 的 文 本 域consoleTextArea放在 滾 動條 面 板consoleScrollPane中,并且設置為不可編輯。當客 戶 端 連 接 成 功 或 失 敗 ,上 傳 文 件 或 下 載 文 件 時 , 利 用 函 數taskScrollPane.append()和consoleTextArea.append()在相應的區域顯示任務信息。JScrollPane類的定義:JScrollPanetaskScrollPane=newJScrollPa

29、ne(taskList);JScrollPaneconsoleScrollPane=newJScrollPane(consoleTextArea);4.1.4操作按鈕模塊詳細設計操作按鈕使用JButton構件實現,客戶端共有連接、上傳、下載、斷開、關閉、上一級目、錄刷、新重命名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 uploadButton = new JButton(上傳); private JButton renameButton = new JBut

31、ton(重命名);private JButton upDirButton = new JButton(上級目錄);每個按鈕都有自己的響應事件來實現各自的功能,分別如下連接:connectButton.addActionListener( ).上傳:uploadButton.addActionListener(new ActionListener().下載:downloadButton.addActionListener(new ActionListener().刪除:deleteButton.addActionListener(new ActionListener().斷開:closeButt

32、on.addActionListener(new ActionListener().上一級目錄:upDirButton.addActionListener(new ActionListener().刷新:refreshButton.addActionListener(new ActionListener().重命名:renameButton.addActionListener(new ActionListener().各按鈕在定義各自的響應后,用戶在點擊這些按鈕時,會做出相應的處理,啟動對應的進程。4.2功能模塊實現4.2.1連接服務器客戶端中FtpBean類中connect方法用來實現連接服

33、務器功能,在Java中實現這一功能是借助FtpClient類完成的,首先是使用FtpClient類的openServer(stringserver)方法打開遠程FTP服務器,然后使用FtpClient類的login(user,password)方法登錄服務器。登錄遠程FTP服務器有兩種方式,一種是注冊用戶登錄,另一種是以匿名方式登錄。使用第一種方式登錄需要擁有該服務器的注冊用戶名和密碼,匿名方式則是以designpattern作為用戶名來登錄。類ftpClient提供了如下兩個可用于打開與FTP服務器之間的連接的方法1.openServer(Stringhostname)用于建立一條與指定主機

34、上的FTP服務器的連接,使用默認端口號:212. connect(String dir, String hostname, int port, String username,String passwd) 用于建立一條與指定主機、指定端口上的FTP服務器的連接。本文所使用的是第一種方法進行連接,首先定義4個字符串,命名為ip,username,port,password,分別用來接收來自數據輸入界面的數據。然后將接收到的數據發送至服務器驗證,驗證成功則使用對話框函數在信息顯示界面中提示連接成功,失敗則顯示連接失敗。4.2.2上傳文件客戶端中實現上傳功能的文件為FtpBean類中的uploadF

35、ile函數來實現。當用戶選擇文件上傳時,客戶端會創建一個到FTP服務器的連接,同樣使用ftpClient類的openServer()方法和login()登錄到服務器,并切換到用戶選擇的目標目錄下,把傳輸格式設置為二 進 制 格 式 , 將 本 地 文 件 上 傳 至FTP 服 務 器 。 上 傳 結 束 后 利 用ftpClient.closeServer()函數斷開,并更新數據表格和清除任務線程。一般情況下FTP服務器為了保證其安全性,權限中會設置是否允許用戶上傳文件。上傳失敗時,出錯處理會在對話框面板中顯示出文件上傳失敗。上傳的具體代碼見附錄。4.2.3下載文件客戶端下載文件由為FtpBe

36、an類中的downloadFile函數來實現。如果用戶想要下載列表中的某一個文件,首先判斷項目的類型是否是文件,如果是文件,則得到下載的文件名并下載文件,如果選中的是目錄,則不能下載。用戶選擇好要下載的文件后,客戶端打開服務器連接端口,使用ftpClient類的openServer()方法和login()登錄到服務器,把傳輸格式設置為二進制格式,使用ftpClient.get()函數獲得文件名,下載并保存至用戶指定的路徑。下載完成后ftpClient.closeServer()關閉與服務器的連接并清除線程。當用戶下載失敗時,出錯處理會在信息顯示面板中顯示下載出錯。下載的具體代碼見附錄。5 功能

37、運行測試為了驗證程序是否能正常運行,我選擇連接IP為29的FTP服務器來測試。運行環境為windows7+eclipse。首先是服務器連接的驗證:在服務器地址中輸入29,在用戶名中輸入designpattern,在密碼欄中輸入designpattern,點擊連接按鈕后,出現結果如下圖:結果顯示連接功能實現,服務器文件信息列表中顯示了ip為29的FTP服務器下的文件夾列表,信息顯示中顯示了正確的連接信息。然后是下載文件功能的測試,選擇程序設計模式封頁.doc文件,點擊下載選擇保存至D盤,如圖:繼續點擊保存按鈕,下載任務中成功

38、添加下載任務,文件下載完后,如圖: 最后是上傳功能測試。先在本機上創建一個名叫“程序設計模式封頁.doc”的文件,選擇上傳至跟目錄下,點擊上傳,顯示如圖:為了驗證是否真的上傳至FTP服務器,我用網上鄰居訪問了IP為29的FTP服務器,結果如圖:文件確實上傳成功。至此,功能驗證已經完畢!6 .結語 FTP的目標是提高文件的共享性和可靠高效地傳送數據,而FTP客戶端的作用是使用戶方便的連接和訪問FTP服務器。本文實現了一個簡單易用的FTP客戶端,在分析FTP協議的基本工作原理和FTP的數據傳輸原理的基礎上,詳細介紹了如何使用Java工具對FTP客戶端進行設計,選擇Java類

39、庫來實現FTP客戶端程序的上傳下載等主要功能,并用eclipse軟件提供的一個支持可視化編程的開發環境,從而實現了對FTP客戶端的開發。雖然現在有很多實現FTP客戶端程序的技術和方法,諸如Winsock控件和Delphi的Indy組件等,但是使用Java在程序實現上顯得更加簡捷靈活,并具有較好的可擴充性和可移植性,在本文中使用的方法也是比較便捷和高效的。 參考文獻1楊錫林、張燕等.Java編程高手.北京大學出版社,2000年12月第一版(1):169173.2葉新銘等譯.計算機網絡(原書第二版).機械工業出版社,2001年6月 :端到端協議242-283.3夏先波等.JAVA+JDK實例開發寶

40、典.電子工業出版社,2001年第一版:第13章.網絡編程281289.4 J. Reynolds. RequestforComments:959:FileTransferProtocol,October1985 ,:THEFTPMODEL78.5葉俊民.軟件工程.清華大學出版社,2006年6月第一版:第3章.軟件需求分析基礎5173.6Horstmann,C.S,Cornell,G.Java2核心技術.機械工業出版社,2006年3月第一版:第6章.高級Swing2793857 楊淑萍 基于Java的FTP客戶端程序的設計與實現 .現代計算機.8 謝希仁 計算機網絡(第五版) 電子工業出版社附錄

41、:程序源碼 ,主要核心代碼:FTPFrame.javapublic void connect()/連接FTP服務器String s=ftp.connect(/, url.getText().toString(), Integer.parseInt(port.getText(), username.getText().toString(), password.getText().toString();status.setText(s);update();if(s.equals(Success)time = new Date();out.println(time+ 登陸服務器:+url.getTe

42、xt();connectButton.setEnabled(false);closeButton.setEnabled(true);elseJOptionPane.showMessageDialog(null, s);connectButton.setEnabled(true);closeButton.setEnabled(false);public void uploadFile()/上傳文件JFileChooser fDialog=new JFileChooser(); /文件選擇器int result=fDialog.showOpenDialog(null);if(result=JFil

43、eChooser.APPROVE_OPTION)String file=fDialog.getSelectedFile().toString();String targetFile=new String();StringTokenizer st=new StringTokenizer(file,);/拆分文件名while(st.hasMoreTokens()targetFile=st.nextToken();boolean b=ftp.uploadFile(file,targetFile);if(b=true)update();status.setText(上傳文件+targetFile+成功

44、);JOptionPane.showMessageDialog(null, 上傳文件+targetFile+成功);time = new Date();out.println(time+ 上傳文件:+targetFile+成功);elsestatus.setText(上傳文件+targetFile+失敗);JOptionPane.showMessageDialog(null, 上傳文件+targetFile+失敗);out.println(time+ 上傳文件:+targetFile+失敗); public void downloadFile()/下載文件if(!fileList.isSele

45、ctionEmpty()String 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.sh

溫馨提示

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

評論

0/150

提交評論