FTP客戶端軟件的設計與實現(xiàn)_第1頁
FTP客戶端軟件的設計與實現(xiàn)_第2頁
FTP客戶端軟件的設計與實現(xiàn)_第3頁
FTP客戶端軟件的設計與實現(xiàn)_第4頁
FTP客戶端軟件的設計與實現(xiàn)_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、XX大學畢業(yè)設計題目:FTP客戶端軟件的設計與實現(xiàn)指導教師:XXX職稱:副教授學生姓名:XXX學號:201XXXXXXXXX專業(yè):計算機科學與技術院(系):信息工程學院完成時間:2014年5月9日2014年5月9日FTP客戶端設計與實現(xiàn)摘要信息時代的到來,信息的交流變得越來越重要,而信息的交流離 不開文件的傳輸?;贔TP的文件傳輸系統(tǒng)意在搭建一個文件傳輸平 臺,使其在安全、透明、快捷的環(huán)境下來進行文件傳輸。網絡上進行信息共享或文件傳輸,都是基于某種協(xié)議而進行的, FTP是人們在網絡中進行文件傳輸普遍采用的一種協(xié)議。系統(tǒng)使用流 行的Java作為開發(fā)語言,采用C/S模式作為網絡結構,利用套接字

2、編程實現(xiàn)多線程傳輸。論文首先對現(xiàn)在常用的FTP進行了分析,然后介紹了系統(tǒng)的需求 分析和設計過程,給出了服務器和客戶端的功能模塊及總體流程,最 后給出了網絡文件傳輸系統(tǒng)服務器和客戶端的編碼實現(xiàn),并對系統(tǒng)各 個功能的實現(xiàn)進行了測試,分析優(yōu)缺點和總結。通過測試,該系統(tǒng)實用、界面簡單,能進行文件上傳和下載并支 持多線程,是一個比較好的文件傳輸系統(tǒng)。關鍵詞:文件傳輸協(xié)議,TCP/IP,多線程,套接字Design and implementation of an FTP client AbstractThe arrival of the information age, the exchange of i

3、nformation is becoming increasingly important, and the exchange of information can not be separated file transfer . FTP-based file transfer system is intended to set up a file transfer platform , so in a safe , transparent and efficient environment down the file transfer.Information sharing on a net

4、work or file transfer, are carried out based on a protocol , FTP is a protocol for file transfer people to be widely used in the network. The system uses the popular Java as a development language , using C / S mode as the network structure , the use of socket programming multithreaded transfers.Fir

5、stly, on the now commonly used FTP analyzed, and then introduced the system requirements analysis and design process , gives the server and client modules and the overall process . Finally, network file transfer server and client code implementation, and realization of various functions system has b

6、een tested , analyzed and summarized the advantages and disadvantages .Through testing, the system is practical , simple interface , files can be uploaded and downloaded and supports multi-threading , is a good file transfer system .Keywords : file transfer protocol , TCP / IP, multi-threaded, socke

7、t TOC o 1-5 h z HYPERLINK l bookmark18 o Current Document 第1章緒論6 HYPERLINK l bookmark21 o Current Document 1.1課題背景6 HYPERLINK l bookmark24 o Current Document 1.2課題現(xiàn)狀7 HYPERLINK l bookmark31 o Current Document 1.3本文組織方式8 HYPERLINK l bookmark34 o Current Document 第2章開發(fā)工具及關鍵技術8 HYPERLINK l bookmark37 o

8、 Current Document 2.1開發(fā)工具82.2關鍵技術10 HYPERLINK l bookmark54 o Current Document C/S架構簡介10 HYPERLINK l bookmark63 o Current Document SOCKET 網絡編程11 HYPERLINK l bookmark67 o Current Document FTP協(xié)議簡介11 HYPERLINK l bookmark71 o Current Document 第3章客戶端文件傳輸系統(tǒng)設計13 HYPERLINK l bookmark74 o Current Document 3.1

9、客戶端需求分析13 HYPERLINK l bookmark77 o Current Document 3.1.1用戶需求13 HYPERLINK l bookmark80 o Current Document 3.1.2功能需求13 HYPERLINK l bookmark84 o Current Document 3.1.3性能需求133.2客戶端設計14 HYPERLINK l bookmark87 o Current Document 3.2.1客戶端整體模塊14 HYPERLINK l bookmark93 o Current Document 3.2.2客戶端流程劃分15ftpcl

10、ient 類 16 HYPERLINK l bookmark100 o Current Document 3.4實現(xiàn)思路17 HYPERLINK l bookmark108 o Current Document 第4章文件傳輸系統(tǒng)的實現(xiàn)18 HYPERLINK l bookmark111 o Current Document 4.1界面模塊實現(xiàn)18 HYPERLINK l bookmark114 o Current Document 4.2登錄界面實現(xiàn)18 HYPERLINK l bookmark117 o Current Document 4.3瀏覽程序24 HYPERLINK l book

11、mark120 o Current Document 4.3. 1瀏覽服務器端目錄程序24 HYPERLINK l bookmark123 o Current Document 4.4文件的上傳與下載274.4.1文件下載程序27 HYPERLINK l bookmark126 o Current Document 4.4.2文件上傳程序27第5章 系統(tǒng)測試及問題處理35 HYPERLINK l bookmark129 o Current Document 5.1測試環(huán)境35 HYPERLINK l bookmark132 o Current Document 5.2測試結果36 HYPERL

12、INK l bookmark135 o Current Document 5.2.1登錄模塊測試36 HYPERLINK l bookmark138 o Current Document 5.2.2系統(tǒng)兼容性測試36 HYPERLINK l bookmark141 o Current Document 5.3測試總結36結 論38 HYPERLINK l bookmark144 o Current Document 參考文獻39致謝40 HYPERLINK l bookmark151 o Current Document 聲 明41第1章緒論1.1課題背景隨著Internet在全世界的普及和發(fā)

13、展,越來越多的用戶將自己的計算機連 入這個人類有史以來最龐大的網絡中。其中FTP(File Transfer Protocol)是 Internet中最早提供的服務之一,目前仍在被人們廣泛使用著。如果說Internet 是如今的信息高速公路的話,F(xiàn)TP文件傳輸系統(tǒng)就是其上面的洲際車,它使用 TCP/IP體系結構中應用層上的FTP協(xié)議在不同的計算機系統(tǒng)之間互相傳輸文件。 人們通常將文件傳輸服務稱為FTP服務。通過FTP服務,Internet 上的用戶可 以從授權的異地計算機上獲取所需的文件,也可以把本地文件傳輸到其他計算機 上,這就為計算機之間雙向傳輸文件提供了一種有效的手段。FTP憑借其透明、

14、 快捷等特點,越來越多的人通過FTP能夠在互聯(lián)網上獲得大量免費文件,F(xiàn)TP協(xié) 議已經是Internet上應用最多的協(xié)議之一。雖然FTP應用非常廣泛,但在國內仍然缺乏高性能的產品。由于商業(yè)原因, 對國外FTP文件傳輸系統(tǒng)中的關鍵技術也知之甚少;同時國內對FTP系統(tǒng)的研究 也是相對較少的,這從學術刊物上發(fā)表的相關文章就可以看出。所以基于FTP 的文件傳輸系統(tǒng)的研究是有一定意義的。在FTP的眾多功能中,安全性是一個突 出且敏感的功能。絕大多數企業(yè)、部門在使用FTP的時候,都會考慮這個問題, 把它作為選購FTP文件傳輸系統(tǒng)產品的重要依據。目前市場上流行的FTP系統(tǒng), 像CuteFtp、FtpComma

15、nder、FlashFtp等,都是國外的產品,雖然功能和性能等 方面都還不錯,但畢竟是通用的軟件,任何人都可以得到并對其進行研究,從而 可能給這些軟件的安全性帶來潛在的問題。從保證安全性的角度出發(fā),很有必要 根據自身的需要開發(fā)一個自己的文件傳輸系統(tǒng),這樣就可以避免采用通用軟件帶 來的危險。另一方面,在實際使用國外產品的過程中,發(fā)現(xiàn)它們并不能很好的滿 足用戶的要求。比如說,訪問日志功能,雖然絕大多數的國外產品都有,但是, 這些日志功能都是固定的,不能夠根據用戶的要求來靈活的生成,而這個功能又 是用戶所必須的。因此研究并實現(xiàn)FTP文件傳輸系統(tǒng)不僅有助于深入了解各種 Innternet協(xié)議的實現(xiàn)細節(jié)

16、,掌握FTP的技術,而且可實現(xiàn)軟件的國產化,滿足 國內用戶的安全性需求,對于社會和個人都有積極的意義。本畢業(yè)設計將介紹FTP客戶端系統(tǒng)的設計和開發(fā)工作,因此,文章將涵蓋以 下四個方面的內容:1.基礎技術知識介紹;2.文件傳輸系統(tǒng)的詳細需求;3.介紹 系統(tǒng)體的具實現(xiàn);4.對最終系統(tǒng)進行測試。通過這次課題,對整個開發(fā)過程有深 入的了解,提高實踐能力。FTP將在未來的很長時間里作為主要的文件傳輸協(xié)議, 使用前景仍然寬廣,功能會更加強大。1.2課題現(xiàn)狀互聯(lián)網上傳統(tǒng)的技術模式是C/S模式,F(xiàn)TP(File Transfer Protocol)文件 傳輸服務就是這種模式的典型代表。FTP是TCP/IP協(xié)議

17、組中的協(xié)議之一,該協(xié) 議是Internet文件傳送的基礎,它促進了文件的共享、鼓勵間接或者隱式地使用 遠程計算機、向用戶屏蔽不同主機中各種文件存儲系統(tǒng)的細節(jié)以及提供可靠和高 效的數據傳輸。在TCP/IP協(xié)議中,F(xiàn)TP標準命令TCP端口號為21,Port方式數 據端口為20。FTP中主要采用了 TCP傳輸控制協(xié)議(Transmission Control Protocol)和 Telnet 協(xié)議。在網絡普及的今天,政府機關、企業(yè)、學校等各行各業(yè)已經廣泛地應用并建 立了自己的FTP文件傳輸系統(tǒng),F(xiàn)TP極大地提高了我們的工作效率和管理水平。 由于計算機網絡的互聯(lián)、互通的特性,為我們工作帶來方便和效率

18、。普通的FTP 服務要求用戶必須在要訪問的計算機上有用戶名和口令。而Internet上最受歡迎 的是稱為匿名FTP的服務,用戶在登錄這些服務器時不用事先注冊一個用戶名 和口令,而是以“anonymous或“FTP用戶名,自己的電子郵件地址為口令即 可。匿名FTP是目前Internet上進行資源共享的主要途徑之一。它的特點是訪 問方便,操作簡單,容易管理.Internet上有許多的資源都是以FTP的形勢提供 給大家使用的,包括各種文檔、軟件工具包等等。FTP雖然是一種已經成熟且應用廣泛的的技術,但是其仍然存在需要改進的地方。 主要有下面幾個方面:服務器和客戶端的功能被明確劃分,如何在服務器端負載

19、壓力很大的情況下 提高客戶端的帶寬資源的利用率。FTP使用明文傳輸,如何使用多種加密手段保全系統(tǒng)及客戶信息的安全。FTP時延太高,如何保證文件傳輸速度的穩(wěn)定。FTP的開放性,如何保證共享資源的內容健康。1.3本文組織方式本文從課題的的現(xiàn)狀和背景入手,分析了 FTP文件傳輸系統(tǒng)的現(xiàn)狀和國內 外的研究背景。后續(xù)章節(jié)的主要內容安排如下:第二章開發(fā)工具及關鍵技術,主 要講述了本次設計用到的編程語言java和開發(fā)平臺Jbuilder 2006,并對它們的 特點進行了說明;接著闡述了本次設計用到的關鍵技術C/S模式與socket網絡 編程,最后對FTP協(xié)議進行了介紹。第三章文件傳輸系統(tǒng)設計主要講述了 FT

20、P 文件傳輸系統(tǒng)的設計,對系統(tǒng)進行需求分析,各個模塊的流程劃分、設計和架構, 并對用到的關鍵技術進行了說明。第四章文件傳輸系統(tǒng)的實現(xiàn),對客戶端和服務 器各個功能模塊的編碼實現(xiàn)進行說明并列出部分代碼。第五章系統(tǒng)測試,對客戶 端和服務器進行了測試,測試結果表明系統(tǒng)實現(xiàn)了設計的功能并達到預期的性能。第2章開發(fā)工具及關鍵技術2.1開發(fā)工具2.1.1開發(fā)語言Java是Sun公司推出的一種編程語言。Java語言的設計集中于對象及其接 口,它提供了簡單的類機制以及動態(tài)的接口模型,高度抽象,采用純面向對象編 程的思想和方法。Java還帶有很多的擴展的類包(Package),在程序中可以輕 松調用,簡化程序員的

21、工作。Java程序運行的硬件或軟件環(huán)境,稱為平臺。Java 平臺包括2個部分:Java虛擬機和Java應用程序接口。Java API: Java應用程 序接口,用于Java程序的使用和Java虛擬機的接口。Java虛擬機用于將Java 字節(jié)碼翻譯成特定機器碼?;谟布钠脚_,即Java程序運行的特定的硬件環(huán) 境。Java是一種簡單的、面象對象的、分布式的、解釋的、鍵壯的、安全的、結構 的、中立的、可移植的、性能很優(yōu)異的、多線程的、動態(tài)的語言。Java特點有 如下:1、平臺無關性平臺無關性是指Java能運行于不同的平臺。Java引進虛擬機原理,并運行于虛 擬機,實現(xiàn)不同平臺的Java接口之間。使

22、用Java編寫的程序能在世界范圍內共 享。Java的數據類型與機器無關,Java虛擬機(Java Virtual Machine)是建立 在硬件和操作系統(tǒng)之上,實現(xiàn)Java二進制代碼的解釋執(zhí)行功能,提供于不同平 臺的接口的。2、安全性Java的編程類似C+,學習過C+的讀者將很快掌握Java的髓。Java舍棄了 C+的指針對存儲器地址的直接操作,程序運行時,內存由操作系統(tǒng)分配,這樣 可以避免病毒通過指針侵入系統(tǒng)。Java對程序提供了安全管理器,防止程序的 非法訪問。3、面向對象Java吸取了 C+面向對象的概念,將數據封裝于類中,利用類的優(yōu)點實現(xiàn)了程 序的簡潔性和便于維護性。類的封裝性、繼承性

23、等有關對象的特性,使程序代碼 只需一次編譯,然后通過上述特性反復利用。程序員只需把主要精力用在類和接 口的設計和應用上。Java提供了眾多的一般對象的類,通過繼承即可使父類的 方法。在Java中,類的繼承關系是單一的而非多重的,一個子類只有一個父類, 子類的父類又有一個父類。Java提供的Object類及其子類的繼承關系如同一棵 倒立的樹形,根類為Object類,Object類功能強大,經常會使用到它及其它派 生的子類。4、分布式Java建立在擴展TCP/IP網絡平臺上。庫函數提供了用HTTP和FTP協(xié)議傳送和 接受信息的方法。這使得程序員使用網絡上的文件和使用本機文件一樣容易。5、鍵壯性Ja

24、va致力于檢查程序在編譯和運行時的錯誤,類型檢查幫助檢查出許多開發(fā)早 期出現(xiàn)的錯誤。Java可以自己操縱內存減少了內存出錯的可能性。Java還實現(xiàn) 了真數組,避免了覆蓋數據的可能。這些功能特征大大提高了開發(fā)Java應用程 序的周期。2.1.2開發(fā)平臺NetBeans包括開源的開發(fā)環(huán)境和應用平臺,NetBeans IDE可以使開發(fā)人員 利用Java平臺能夠快速創(chuàng)建Web、企業(yè)、桌面以及移動的應用程序,NetBeans IDE 已經支持 PHP、Ruby、JavaScript、Groovy、Grails 和 C/C+等開發(fā)語言。NetBeans項目由一個活躍的開發(fā)社區(qū)提供支持,NetBean開發(fā)環(huán)

25、境提供了 豐富的產品文檔和培訓資源以及大量的第三方插件。NetBeans是開源軟件開發(fā)集成環(huán)境,是一個開放框架,可擴展的開發(fā)平臺, 可以用于Java、C/C+,PHP等語言的開發(fā),本身是一個開發(fā)平臺,可以通過 擴展插件來擴展功能。在NetBeans Platform平臺中,應用軟體是用一系列的軟體模組(Modular Software Components)建構出來。而這些模組是一個 jar 檔(Java Archive File) 它包含了一組Java程式的類別而它們實作全依據依NetBeans定義了的公開介 面以及一系列用來區(qū)分不同模組的定義描述檔(Manifest File)。有賴於模組

26、化帶 來的好處,用模組來建構的應用程式可只要加上新的模組就能進一步擴充。由於 模組可以獨立地進行開發(fā),所以由NetBeans平臺開發(fā)出來的應用程式就能利 用著第三方軟件,非常容易及有效率地進行擴充。如果用戶既要求易于進行可視 化布局,又要求有較大的靈活性,NetBeans就是最好的選擇。2.2關鍵技術C/S架構簡介客戶機/服務器在分布處理過程中,使用基于連接的網絡通信模式。該通信 模式首先在客戶機和服務器之間定義一套通信協(xié)議,并創(chuàng)建一 Socket類,利用 這個類建立一條可靠的鏈接;然后,客戶機/服務器再在這條鏈接上可靠地傳輸 數據。客戶機發(fā)出請求,服務器監(jiān)聽來自客戶機的請求,并為客戶機提供響

27、應服 務。這就是典型的“請求一應答”模式。下面是客戶機/服務器的一個典型運作 過程:服務器監(jiān)聽相應端口的輸入;客戶機發(fā)出一個請求;(3 )服務器接收到此請求;服務器處理這個請求,并把結果返回給客戶機;上述過程,直至完成一次會話過程。圖1 2層C/S結構圖SOCKET網絡編程所謂socket通常也稱作套接字,應用程序通常通過套接字向網絡發(fā)出 請求或者應答網絡請求socket的英文原義是“孔”或“插座”。作為BSD UNIX 的進程通信,取后一種意思。用于描述IP地址和端口,是一個通信鏈的句柄。 在Internet上的主機運行了多個服務軟件,同時提供幾種服務。每種服務都打 開一個Socket,并綁

28、定到一個端口上,不同的端口對應于不同的服務。Socket 正如其英文原意那樣,像一個多孔插座。一臺主機猶如布滿各種插座的房間,每 個插座有一個編號,有的插座提供220伏交流電,有的提供110伏交流電,有 的則提供有線電視節(jié)目。客戶軟件將插頭插到不同編號的插座,就可以得到不 同的服務。使用socket套接字,利用TCP/IP或者UDP協(xié)議,實現(xiàn)幾個機器之間的通信。 一般使用C/S結構。以TCP/IP為例:首先建立一個服務器,步驟如下:socket ()創(chuàng)建一個socket, bind()綁定socket得到一個端口,listen()監(jiān)聽端 口,accept()等待客戶端的連接。客戶端程序:soc

29、ket()創(chuàng)建一個socket, 可以綁定也可以不綁定,然后connect()連接到服務器端。Socket又分為阻塞 式的和非阻塞式的。阻塞式的就是服務器端等待連接直到連接上,不然一直掛起。FTP協(xié)議簡介FTP是TCP/IP協(xié)議組中的協(xié)議之一,是英文File Transfer Protocol的 縮寫。該協(xié)議是Internet文件傳送的基礎,它由一系列規(guī)格說明文檔組成,目 標是提高文件的共享性,提供非直接使用遠程計算機,使存儲介質對用戶透明和 可靠高效地傳送數據。簡單的說,F(xiàn)TP就是完成兩臺計算機之間的拷貝,從遠程 計算機拷貝文件至自己的計算機上,稱之為下載(download)”文件。若將文

30、件從自己計算機中拷貝至遠程計算機上,則稱之為“上載(upload)”文件。在 TCP/IP協(xié)議中,F(xiàn)TP標準命令TCP端口號為21,Port方式數據端口為20。從根本上說,F(xiàn)TP協(xié)議就是在網絡中各種不同的計算機之間按照TCP/IP協(xié) 議來傳輸文件FTP協(xié)議采用客戶機/服務器(Client/Sever)模式,由FTP客戶 端程序和FTP服務器端程序組成。使用時,先啟動FTP客戶端程序與遠程主機建 立連接,然后向遠程主機發(fā)出傳輸命令,遠程主機在收到命令后就給予響應,并 執(zhí)行正確的命令。但是FTP有一個根本的限制,那就是,如果用戶在某個主機上 沒有注冊獲得授權,即沒有用戶名和口令,就不能與該主機進行

31、文件傳輸。但匿 名FTP服務器除外,它能夠使用戶與遠程主機建立連接并以匿名身份從遠程主機 上拷貝文件,而不必是該遠程主機的注冊用戶。用戶使用特殊的用戶名“Anonymous”或“guest”就可有限制地訪問遠程主機上公開的文件。現(xiàn)在許多 系統(tǒng)要求用戶將Emai1地址作為口令,以便更好地對訪問者進行跟蹤。出于安全 的目的,大部分匿名FTP主機一般只允許遠程用戶下載(download)文件,而不允 許上載(upload)文件。也就是說,用戶只能從匿名FTP主機拷貝其需要的文件而 不能把文件拷貝到匿名FTP主機。另外,匿名FTP主機還采用了其他一些保護措 施以保護自己的文件不至于被用戶修改和刪除,并

32、防止計算機病毒的侵入。匿名 FTP 一直是Internet上獲取信息資源的最主要方式,在Internet成千上萬的匿 名FTP主機中存儲著無以計數的文件,這些文件包含了各種各樣的信息、數據和 軟件。人們只要知道特定信息資源的主機地址,就可以用匿名FTP登錄。FTP客戶端設計的原理,F(xiàn)TP使用兩條TCP連接來完成文件傳輸:控制連接 與數據連接??刂七B接用于傳輸控制,數據連接用于數據輸送。在服務器啟動后, 服務器就會在端口 21等待客戶的連接請求,有用戶需要傳輸文件時,客戶與服 務器的端口 21建立一個控制連接,用來傳送客戶的命令和服務器的應答,該連 接一直保持到客戶與服務器通信結束為當客戶發(fā)出數

33、據傳輸命令時,服務器會主 動與客戶建立數據連接,并與其進行數據交換??蛻舳擞脩舨⒉恢苯犹幚砜刂七B接上的FTP命令和FTP響應,而是由兩個 協(xié)議解釋器進行處理。用戶接口為客戶端用戶提供一定形式的輸入界面,接收用 戶的命令,將其轉換成標準的FTP命令,最終將控制連接上的FTP響應轉換成用 戶可理解的方式。在客戶與服務器的整個連接期間,控制連接必須保持,而數據 連接卻可以根據請求動態(tài)地建立和關閉。在最常用的流模式中,文件結束是用數 據連接的關閉來表示的,換句話說,每傳輸一個文件或文件列表,系統(tǒng)就會再建 立一個新的數據連接。圖2 FTP使用的兩個TCP連接第3章客戶端文件傳輸系統(tǒng)設計3.1客戶端需求分

34、析3.1.1用戶需求軟件要簡單易上手,能夠登錄到用戶指定的服務器上,進行訪問和數據的上 傳下載與重命名,刪除等功能。3.1.2功能需求該系統(tǒng)主要包括以下幾個方面:可視化的交互界面模塊;2.登錄服務器模塊;3.瀏覽服務器/本地目錄和 文件模塊;4.上傳/下載文件模塊。由這四個模塊構成該系統(tǒng)。3.1.3性能需求整個系統(tǒng)操作應當簡便,界面友好,運行穩(wěn)定,執(zhí)行速度快。系統(tǒng)本身運 行對計算機硬件平臺和操作系統(tǒng)平臺要求適中。3.2客戶端設計3.2.1客戶端整體模塊這個部分是本文設計的中心部分,是對客戶端進行主要的功能設計和界面設 計。FTP客戶端作為用戶連接FTP服務器的工具,需要具備一些基本功能模塊,

35、如連接、上傳、下載等,其中最主要的三大功能模塊如下:1、下載功能模塊:連接用戶指定的FTP服務器,獲取服務器目錄下的文件列 表,當用戶選擇項目為文件時,點擊下載可以下載用戶所需要的文件。選定文件 后提示用戶將文件存儲在何處,用戶選擇存儲區(qū)后開始下載任務。依靠FTP協(xié)議的支持,用戶下載的文件沒有類型和大小限制,即用戶可已選 擇任何自己想要下載的文件,通過FTP客戶端進行下載。2、上傳功能模塊:用戶可以自行選擇本機上存儲的文件,上傳至FTP服務器。 在用戶選擇存儲在服務器的位置后,點擊上傳,選擇所需要上傳的文件,即可將 文件上傳至服務器。3、連接功能模塊:將用戶本機與指定的IP地址連接,驗證用戶命

36、和密碼, 在FTP服務器上進行注冊。有了這三個基本的功能模塊,客戶端的基本應用功能即可實現(xiàn)。如圖3.1所示:圖3 FTP 客戶端整體結構模塊圖客戶在啟動客戶端程序后輸入相應的登陸信息就能連接到服務器上,對服務 器上的文件進行瀏覽、新建、刪除、重命名、上傳、下載文件等操作,通過斷開 結束與服務器的連接。3.2.2客戶端流程劃分客戶端整體流程如圖4所示:3.3 ftpclient 類Java類庫的存在使它適合于一個不斷發(fā)展的環(huán)境。在類庫中我們可以自由 地加入新的方法和實例變量而不會影響用戶程序的執(zhí)行。并且Java通過接口來 支持多重繼承,使其比嚴格的類繼承具有更靈活的方式和擴展性。在處理復雜事 物

37、的時候,用到的一種基本手段就是抽象。抽象的目的就是區(qū)別事物之間的本質 和不同,面向對象編程(OOP)的實質就是利用類和對象來建立抽象模型。類表 示了對象的類別,是創(chuàng)建對象的藍本。建立一個事物的抽象模型,本質上就是表 達該事物的性質和行為。使用類來建立抽象模型,是通過在類中定義變量和方法 來實現(xiàn)的。類中定義的屬性是一種可存儲值的變量,該變量代表著事物的具體性 質。在J2SE中提供了與客戶端編程有關的Api,它就是. HYPERLINK ftp:/ftp.FtpClient ftp.FtpClient 類,F(xiàn)tpClient類封裝了FTP協(xié)議的相關指令與實現(xiàn)細節(jié),提供了一系列的方法, 這些方法涵蓋

38、了幾乎所有ftp的功能使用FtpClient類設計FTP客戶端程序可 以讓編程人員輕松地實現(xiàn)登錄遠程FTP服務器、瀏覽服務器上的目錄、設置傳輸 協(xié)議、上傳文件和下載文件等功能。本文所使用的FtpClient類的構造方法和主要方法如下:Public FtpClient(String hostname)此構造函數利用給出的主機名建立一條FTP連接,使用默認端口號。Public void openServer(String hostname)這個方法用于建立一條與指定主機上的FTP服務器的連接,使用默認端口號。Public void login(String username, String pas

39、sword)此方法利用參數username和password登錄到FTP服務器。使用過Intemet的用 戶應該知道,匿名FTP服務器的登錄用戶名為anonymous,密碼一般用自己的電 子郵件地址。Public void binary():該命令可把傳輸格式設置為二進制格式。3.4實現(xiàn)思路在NetBeans環(huán)境所提供的擴展包中,已經提供了一些網絡類的類庫一一 .ftp.FtpClient.,該類庫主要用于建立FTP連接的類。利用此類的方法,我 們可以遠程登錄到FTP服務器,列出該服務器上的目錄,設置傳輸協(xié)議,以及 傳送文件。FtpClient類涵蓋了幾乎所有FTP的功能,F(xiàn)tpClient的

40、實例變量保存 了有關建立代理的各種信息。當然,還有很多此類開源的庫,可以實現(xiàn)FTP 的功能。這里我采用了 FtpClient作為此次畢業(yè)設計的資源。以下是部分FtpClient 的常用核心函數說明:FtpClient有三種不同形式的構造函數,此構造函數將創(chuàng)建一 FtpClient類, 但不建立FTP連接。如下:public FtpClient(String hostname,int port)此構造函數利用給出的主機名和端口號建立一條FTP連接。public FtpClient(String hostname)此構造函數利用給出的主機名建立一條FTP連接,使用默認端口號。FtpClient()

41、一旦建立了類FtpClient,F(xiàn)TP連接可以用openServer方法建立,這個類的 方法來打開與FTP服務器的連接。類ftpClient提供了如下兩個可用于打開與 FTP服務器之間的連接的方法。public void openServer(String hostname)此方法用于建立一條與指定主機上的FTP服務器的連接,使用默認端口號。public void openServer(String host,int port)此方法用于建立一條與指定主機、指定端口上的FTP服務器的連接。打開連接之后,接下來的工作是注冊到FTP服務器。這時需要利用下面的方 法。此方法利用參數username和

42、password登錄到FTP服務器。public void login(String username,String password)下面是FtpClient類所提供的一些控制命令。public void cd(String remoteDirectory)該命令用于把遠程系統(tǒng)上的目錄切換到remoteDirectory所指定的目錄。public void cdUp():該命令用于把遠程系統(tǒng)上的目錄切換到上一級目錄。public String pwd():該命令可顯示遠程系統(tǒng)上的目錄狀態(tài)。public void binary():該命令可把傳輸格式設置為二進制格式。此外,類FtpClient

43、還提供了可用于傳遞并檢索目錄清單和文件的若干方法。 這些方法返回的是可供讀或寫的輸入、輸出流。下面是其中一些主要的方法。public TelnetInputStream list()返回與遠程機器上當前目錄相對應的輸入流。public TelnetInputStream get(String filename)獲取遠程機器上的文件filename,借助TelnetInputStream把該文件傳送到 本地。public TelnetOutputStream put(String filename)以寫方式打開一輸出流,通過這一輸出流把文件filename傳送到遠程計算 機。第4章文件傳輸系統(tǒng)的

44、實現(xiàn)4.1界面模塊實現(xiàn)Java是一個面向對象的程序語言,它使用了很多對象,在NetBeans中使用 的是JDK庫(awt,swing),它提供了很多的界面對象,可以很直觀的看到設計的 界面。文件處理界面的設計是在jPanel2的基礎上實現(xiàn)的,增加了一些其他控件。 它是由兩大部分組成:FTP服務器列表,操作時信息列表。還有三個按鈕:連接, 斷開連接,下載按鈕。4.2登錄界面實現(xiàn)一般的使用辦法是,直接使用構造方法創(chuàng)建一個FtpClient類對象(如果在 構造FtpClient類對象時沒有設置參數,則可以使用openServer方法來打開服務 器端口),然后使用login方法來登錄,并進行用戶認證。

45、以下是界面與登錄程序代碼:public class mainView extends JFramepublic tFtpDrive ftpDrive;public DropTarget dtDownload;public DropTarget dtUpload;public DragSource ds;public JFileChooser fc;private String selectItem=null;private String lastSelectItem=null;private long lastClickTime = 0;private javax.swing.JPopupMe

46、nu popMenu;private JMenuItem item;private PopMenuListener popMenuListener = new PopMenuListener();JPanel contentPane;XYLayout xYLayout1 = new XYLayout();JPanel jPanel1 = new JPanel();XYLayout xYLayout2 = new XYLayout();JLabel jLabel1 = new JLabel();JLabel jLabel2 = new JLabel();JLabel jLabel3 = new

47、JLabel();JLabel jLabel4 = new JLabel();JTextField server = new JTextField();JTextField port = new JTextField();JTextField user = new JTextField();JPasswordField pw = new JPasswordField();JCheckBox passiveChkB = new JCheckBox();JCheckBox jCheckBox2 = new JCheckBox();JButton bconnect = new JButton();J

48、Button bdisconnect = new JButton();JPanel lPane = new JPanel();JPanel sPane = new JPanel();JButton bDownload = new JButton();BorderLayout borderLayoutl = new BorderLayout();BorderLayout borderLayout2 = new BorderLayout();JScrollPane jScrollPanel = new JScrollPane();JScrollPane jScrollPane2 = new JSc

49、rollPane();JList remoteList = new JList();JTextArea statusList = new JTextArea();JLabel jLabel5 = new JLabel();JLabel jLabel6 = new JLabel();public mainView(tFtpDrive ftpDrive) try setDefaultCloseOperation(EXIT_ON_CLOSE);jbInit();remoteList.addMouseListener(popMenuListener);this.ftpDrive = ftpDrive;

50、dtDownload = new DropTarget(bDownload, new DownloadHandler();dtUpload = new DropTarget(remoteList, new UploadHandler();ds = new DragSource();DragGestureRecognizerdgr = ds.createDefaultDragGestureRecognizer(remoteList,DnDConstants.ACTION_COPY,new DragSourceHandler(); catch (Exception exception) jLabe

51、l1.setText(服務器:);jLabel2.setText(端口:);jLabel3.setText(用戶名:);jLabel4.setText(密碼:);server.setText(localhost);port.setText(21”);user.setText(client);pw.setText(client);passiveChkB.setHorizontalAlignment(SwingConstants.CENTER);bconnect.setText(連接);bconnect.addActionListener(new mainView_bconnect_actionA

52、dapter(this);bdisconnect.setText(斷開連接);bdisconnect.addActionListener(newmainView_bdisconnect_actionAdapter(this);lPane.setBackground(Color.gray);lPane.setLayout(borderLayout1);sPane.setBackground(Color.gray);sPane.setLayout(borderLayout2);bDownload.setText(下載);bDownload.addActionListener(newmainView

53、_bDownload_actionAdapter(this);remoteList.addMouseListener(new mainView_remoteList_mouseAdapter(this);contentPane.add(jPanel1, new XYConstraints(5, 8, 265, 349);jPanel1.add(jLabel1, new XYConstraints(7, 27, 43, 17);jPanel1.add(server, new XYConstraints(69, 13, 170, 30);jPanel1.add(jLabel2, new XYCon

54、straints(7, 69, 46, 18);jPanel1.add(jLabel3, new XYConstraints(7, 109, 49, 21);jPanel1.add(jLabel4, new XYConstraints(7, 149, -1, 18);jPanel1.add(port, new XYConstraints(69, 58, 170, 30);jPanel1.add(user, new XYConstraints(69, 104, 170, 30);jPanel1.add(pw, new XYConstraints(69, 148, 170, 30);jPanel1

55、.add(bdisconnect, new XYConstraints(142, 267, -1, -1);jPanel1.add(bconnect, new XYConstraints(24, 267, 83, -1);sPane.add(jScrollPane2, java.awt.BorderLayout.CENTER);jScrollPane2.getViewport().add(statusList);contentPane.add(bDownload, new XYConstraints(24, 398, 212, 78);contentPane.add(lPane, new XY

56、Constraints(290, 53, 467, 203);lPane.add(jScrollPane1, java.awt.BorderLayout.CENTER);contentPane.add(sPane, new XYConstraints(290, 327, 467, 198);contentPane.add(jLabel6, new XYConstraints(287, 301, 118, 27);contentPane.add(jLabel5, new XYConstraints(291, 23, 133, 28);jScrollPane1.getViewport().add(

57、remoteList); remoteList.setModel(new javax.swing.AbstractListModel() String strings = 歡迎使用tFTPClient! ,用法:,在左邊輸入相應信息后按【連接】按鈕,連接FTP服 務器;public int getSize() return strings.length; public Object getElementAt(int i) return stringsi; );登錄驗證服務器代碼:private void connectHandler(java.awt.event.ActionEvent evt

58、) String anonymous = client;String anpassword = client;String dMessage = null;String dTitle = FTP Login Error;int dType = JOptionPane.ERROR_MESSAGE;if(evt.getSource() = bconnect)if(server.getText().length() = 0)dMessage =請輸入FTP服務器的Host/IP地址”;JOptionPane.showMessageDialog( null,dMessage,dTitle,dType)

59、; return;if(user.getText().length() = 0 & !jCheckBox2.isSelected() dMessage =”請輸入用戶帳號”;JOptionPane.showMessageDialog( null,dMessage,dTitle,dType); return;datsktsvr = new ServerSocket(0);/ 獲得一個隨機端口 port = datsktsvr.getLocalPort();/ 設置 host&portStringBuilder cmd = new StringBuilder(PORT );cmd.append(c

60、tlskt.getLocalAddress().getHostAddress();返回InetAddress對象的“X.Y.W.Z”形式的IP地址for (int i = 0; i cmd.length(); i+) (/ 把 55 形式 轉換成 202,168,255,255 形式if (. = cmd.charAt(i)cmd.setCharAt(i, ,);/ port = secondlast*256 + lastcmd.append(,);cmd.append(Integer.toString(port / 256);cmd.append(,);cmd.append(Integer.

溫馨提示

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

評論

0/150

提交評論