




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、XX大學(xué)畢業(yè)設(shè)計題目:FTP客戶端軟件的設(shè)計與實現(xiàn)指導(dǎo)教師:XXX職稱:副教授學(xué)生姓名:XXX學(xué)號:201XXXXXXXXX專業(yè):計算機科學(xué)與技術(shù)院(系):信息工程學(xué)院完成時間:2014年5月9日2014年5月9日FTP客戶端設(shè)計與實現(xiàn)摘要信息時代的到來,信息的交流變得越來越重要,而信息的交流離 不開文件的傳輸?;贔TP的文件傳輸系統(tǒng)意在搭建一個文件傳輸平 臺,使其在安全、透明、快捷的環(huán)境下來進行文件傳輸。網(wǎng)絡(luò)上進行信息共享或文件傳輸,都是基于某種協(xié)議而進行的, FTP是人們在網(wǎng)絡(luò)中進行文件傳輸普遍采用的一種協(xié)議。系統(tǒng)使用流 行的Java作為開發(fā)語言,采用C/S模式作為網(wǎng)絡(luò)結(jié)構(gòu),利用套接字
2、編程實現(xiàn)多線程傳輸。論文首先對現(xiàn)在常用的FTP進行了分析,然后介紹了系統(tǒng)的需求 分析和設(shè)計過程,給出了服務(wù)器和客戶端的功能模塊及總體流程,最 后給出了網(wǎng)絡(luò)文件傳輸系統(tǒng)服務(wù)器和客戶端的編碼實現(xiàn),并對系統(tǒng)各 個功能的實現(xiàn)進行了測試,分析優(yōu)缺點和總結(jié)。通過測試,該系統(tǒng)實用、界面簡單,能進行文件上傳和下載并支 持多線程,是一個比較好的文件傳輸系統(tǒng)。關(guān)鍵詞:文件傳輸協(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ā)工具及關(guān)鍵技術(shù)8 HYPERLINK l bookmark37 o
8、 Current Document 2.1開發(fā)工具82.2關(guān)鍵技術(shù)10 HYPERLINK l bookmark54 o Current Document C/S架構(gòu)簡介10 HYPERLINK l bookmark63 o Current Document SOCKET 網(wǎng)絡(luò)編程11 HYPERLINK l bookmark67 o Current Document FTP協(xié)議簡介11 HYPERLINK l bookmark71 o Current Document 第3章客戶端文件傳輸系統(tǒng)設(shè)計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客戶端設(shè)計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瀏覽服務(wù)器端目錄程序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測試結(jié)果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測試總結(jié)36結(jié) 論38 HYPERLINK l bookmark144 o Current Document 參考文獻39致謝40 HYPERLINK l bookmark151 o Current Document 聲 明41第1章緒論1.1課題背景隨著Internet在全世界的普及和發(fā)
13、展,越來越多的用戶將自己的計算機連 入這個人類有史以來最龐大的網(wǎng)絡(luò)中。其中FTP(File Transfer Protocol)是 Internet中最早提供的服務(wù)之一,目前仍在被人們廣泛使用著。如果說Internet 是如今的信息高速公路的話,F(xiàn)TP文件傳輸系統(tǒng)就是其上面的洲際車,它使用 TCP/IP體系結(jié)構(gòu)中應(yīng)用層上的FTP協(xié)議在不同的計算機系統(tǒng)之間互相傳輸文件。 人們通常將文件傳輸服務(wù)稱為FTP服務(wù)。通過FTP服務(wù),Internet 上的用戶可 以從授權(quán)的異地計算機上獲取所需的文件,也可以把本地文件傳輸?shù)狡渌嬎銠C 上,這就為計算機之間雙向傳輸文件提供了一種有效的手段。FTP憑借其透明、
14、 快捷等特點,越來越多的人通過FTP能夠在互聯(lián)網(wǎng)上獲得大量免費文件,F(xiàn)TP協(xié) 議已經(jīng)是Internet上應(yīng)用最多的協(xié)議之一。雖然FTP應(yīng)用非常廣泛,但在國內(nèi)仍然缺乏高性能的產(chǎn)品。由于商業(yè)原因, 對國外FTP文件傳輸系統(tǒng)中的關(guān)鍵技術(shù)也知之甚少;同時國內(nèi)對FTP系統(tǒng)的研究 也是相對較少的,這從學(xué)術(shù)刊物上發(fā)表的相關(guān)文章就可以看出。所以基于FTP 的文件傳輸系統(tǒng)的研究是有一定意義的。在FTP的眾多功能中,安全性是一個突 出且敏感的功能。絕大多數(shù)企業(yè)、部門在使用FTP的時候,都會考慮這個問題, 把它作為選購FTP文件傳輸系統(tǒng)產(chǎn)品的重要依據(jù)。目前市場上流行的FTP系統(tǒng), 像CuteFtp、FtpComma
15、nder、FlashFtp等,都是國外的產(chǎn)品,雖然功能和性能等 方面都還不錯,但畢竟是通用的軟件,任何人都可以得到并對其進行研究,從而 可能給這些軟件的安全性帶來潛在的問題。從保證安全性的角度出發(fā),很有必要 根據(jù)自身的需要開發(fā)一個自己的文件傳輸系統(tǒng),這樣就可以避免采用通用軟件帶 來的危險。另一方面,在實際使用國外產(chǎn)品的過程中,發(fā)現(xiàn)它們并不能很好的滿 足用戶的要求。比如說,訪問日志功能,雖然絕大多數(shù)的國外產(chǎn)品都有,但是, 這些日志功能都是固定的,不能夠根據(jù)用戶的要求來靈活的生成,而這個功能又 是用戶所必須的。因此研究并實現(xiàn)FTP文件傳輸系統(tǒng)不僅有助于深入了解各種 Innternet協(xié)議的實現(xiàn)細節(jié)
16、,掌握FTP的技術(shù),而且可實現(xiàn)軟件的國產(chǎn)化,滿足 國內(nèi)用戶的安全性需求,對于社會和個人都有積極的意義。本畢業(yè)設(shè)計將介紹FTP客戶端系統(tǒng)的設(shè)計和開發(fā)工作,因此,文章將涵蓋以 下四個方面的內(nèi)容:1.基礎(chǔ)技術(shù)知識介紹;2.文件傳輸系統(tǒng)的詳細需求;3.介紹 系統(tǒng)體的具實現(xiàn);4.對最終系統(tǒng)進行測試。通過這次課題,對整個開發(fā)過程有深 入的了解,提高實踐能力。FTP將在未來的很長時間里作為主要的文件傳輸協(xié)議, 使用前景仍然寬廣,功能會更加強大。1.2課題現(xiàn)狀互聯(lián)網(wǎng)上傳統(tǒng)的技術(shù)模式是C/S模式,F(xiàn)TP(File Transfer Protocol)文件 傳輸服務(wù)就是這種模式的典型代表。FTP是TCP/IP協(xié)議
17、組中的協(xié)議之一,該協(xié) 議是Internet文件傳送的基礎(chǔ),它促進了文件的共享、鼓勵間接或者隱式地使用 遠程計算機、向用戶屏蔽不同主機中各種文件存儲系統(tǒng)的細節(jié)以及提供可靠和高 效的數(shù)據(jù)傳輸。在TCP/IP協(xié)議中,F(xiàn)TP標(biāo)準(zhǔn)命令TCP端口號為21,Port方式數(shù) 據(jù)端口為20。FTP中主要采用了 TCP傳輸控制協(xié)議(Transmission Control Protocol)和 Telnet 協(xié)議。在網(wǎng)絡(luò)普及的今天,政府機關(guān)、企業(yè)、學(xué)校等各行各業(yè)已經(jīng)廣泛地應(yīng)用并建 立了自己的FTP文件傳輸系統(tǒng),F(xiàn)TP極大地提高了我們的工作效率和管理水平。 由于計算機網(wǎng)絡(luò)的互聯(lián)、互通的特性,為我們工作帶來方便和效率
18、。普通的FTP 服務(wù)要求用戶必須在要訪問的計算機上有用戶名和口令。而Internet上最受歡迎 的是稱為匿名FTP的服務(wù),用戶在登錄這些服務(wù)器時不用事先注冊一個用戶名 和口令,而是以“anonymous或“FTP用戶名,自己的電子郵件地址為口令即 可。匿名FTP是目前Internet上進行資源共享的主要途徑之一。它的特點是訪 問方便,操作簡單,容易管理.Internet上有許多的資源都是以FTP的形勢提供 給大家使用的,包括各種文檔、軟件工具包等等。FTP雖然是一種已經(jīng)成熟且應(yīng)用廣泛的的技術(shù),但是其仍然存在需要改進的地方。 主要有下面幾個方面:服務(wù)器和客戶端的功能被明確劃分,如何在服務(wù)器端負載
19、壓力很大的情況下 提高客戶端的帶寬資源的利用率。FTP使用明文傳輸,如何使用多種加密手段保全系統(tǒng)及客戶信息的安全。FTP時延太高,如何保證文件傳輸速度的穩(wěn)定。FTP的開放性,如何保證共享資源的內(nèi)容健康。1.3本文組織方式本文從課題的的現(xiàn)狀和背景入手,分析了 FTP文件傳輸系統(tǒng)的現(xiàn)狀和國內(nèi) 外的研究背景。后續(xù)章節(jié)的主要內(nèi)容安排如下:第二章開發(fā)工具及關(guān)鍵技術(shù),主 要講述了本次設(shè)計用到的編程語言java和開發(fā)平臺Jbuilder 2006,并對它們的 特點進行了說明;接著闡述了本次設(shè)計用到的關(guān)鍵技術(shù)C/S模式與socket網(wǎng)絡(luò) 編程,最后對FTP協(xié)議進行了介紹。第三章文件傳輸系統(tǒng)設(shè)計主要講述了 FT
20、P 文件傳輸系統(tǒng)的設(shè)計,對系統(tǒng)進行需求分析,各個模塊的流程劃分、設(shè)計和架構(gòu), 并對用到的關(guān)鍵技術(shù)進行了說明。第四章文件傳輸系統(tǒng)的實現(xiàn),對客戶端和服務(wù) 器各個功能模塊的編碼實現(xiàn)進行說明并列出部分代碼。第五章系統(tǒng)測試,對客戶 端和服務(wù)器進行了測試,測試結(jié)果表明系統(tǒng)實現(xiàn)了設(shè)計的功能并達到預(yù)期的性能。第2章開發(fā)工具及關(guān)鍵技術(shù)2.1開發(fā)工具2.1.1開發(fā)語言Java是Sun公司推出的一種編程語言。Java語言的設(shè)計集中于對象及其接 口,它提供了簡單的類機制以及動態(tài)的接口模型,高度抽象,采用純面向?qū)ο缶?程的思想和方法。Java還帶有很多的擴展的類包(Package),在程序中可以輕 松調(diào)用,簡化程序員的
21、工作。Java程序運行的硬件或軟件環(huán)境,稱為平臺。Java 平臺包括2個部分:Java虛擬機和Java應(yīng)用程序接口。Java API: Java應(yīng)用程 序接口,用于Java程序的使用和Java虛擬機的接口。Java虛擬機用于將Java 字節(jié)碼翻譯成特定機器碼?;谟布钠脚_,即Java程序運行的特定的硬件環(huán) 境。Java是一種簡單的、面象對象的、分布式的、解釋的、鍵壯的、安全的、結(jié)構(gòu) 的、中立的、可移植的、性能很優(yōu)異的、多線程的、動態(tài)的語言。Java特點有 如下:1、平臺無關(guān)性平臺無關(guān)性是指Java能運行于不同的平臺。Java引進虛擬機原理,并運行于虛 擬機,實現(xiàn)不同平臺的Java接口之間。使
22、用Java編寫的程序能在世界范圍內(nèi)共 享。Java的數(shù)據(jù)類型與機器無關(guān),Java虛擬機(Java Virtual Machine)是建立 在硬件和操作系統(tǒng)之上,實現(xiàn)Java二進制代碼的解釋執(zhí)行功能,提供于不同平 臺的接口的。2、安全性Java的編程類似C+,學(xué)習(xí)過C+的讀者將很快掌握J(rèn)ava的髓。Java舍棄了 C+的指針對存儲器地址的直接操作,程序運行時,內(nèi)存由操作系統(tǒng)分配,這樣 可以避免病毒通過指針侵入系統(tǒng)。Java對程序提供了安全管理器,防止程序的 非法訪問。3、面向?qū)ο驤ava吸取了 C+面向?qū)ο蟮母拍睿瑢?shù)據(jù)封裝于類中,利用類的優(yōu)點實現(xiàn)了程 序的簡潔性和便于維護性。類的封裝性、繼承性
23、等有關(guān)對象的特性,使程序代碼 只需一次編譯,然后通過上述特性反復(fù)利用。程序員只需把主要精力用在類和接 口的設(shè)計和應(yīng)用上。Java提供了眾多的一般對象的類,通過繼承即可使父類的 方法。在Java中,類的繼承關(guān)系是單一的而非多重的,一個子類只有一個父類, 子類的父類又有一個父類。Java提供的Object類及其子類的繼承關(guān)系如同一棵 倒立的樹形,根類為Object類,Object類功能強大,經(jīng)常會使用到它及其它派 生的子類。4、分布式Java建立在擴展TCP/IP網(wǎng)絡(luò)平臺上。庫函數(shù)提供了用HTTP和FTP協(xié)議傳送和 接受信息的方法。這使得程序員使用網(wǎng)絡(luò)上的文件和使用本機文件一樣容易。5、鍵壯性Ja
24、va致力于檢查程序在編譯和運行時的錯誤,類型檢查幫助檢查出許多開發(fā)早 期出現(xiàn)的錯誤。Java可以自己操縱內(nèi)存減少了內(nèi)存出錯的可能性。Java還實現(xiàn) 了真數(shù)組,避免了覆蓋數(shù)據(jù)的可能。這些功能特征大大提高了開發(fā)Java應(yīng)用程 序的周期。2.1.2開發(fā)平臺NetBeans包括開源的開發(fā)環(huán)境和應(yīng)用平臺,NetBeans IDE可以使開發(fā)人員 利用Java平臺能夠快速創(chuàng)建Web、企業(yè)、桌面以及移動的應(yīng)用程序,NetBeans IDE 已經(jīng)支持 PHP、Ruby、JavaScript、Groovy、Grails 和 C/C+等開發(fā)語言。NetBeans項目由一個活躍的開發(fā)社區(qū)提供支持,NetBean開發(fā)環(huán)
25、境提供了 豐富的產(chǎn)品文檔和培訓(xùn)資源以及大量的第三方插件。NetBeans是開源軟件開發(fā)集成環(huán)境,是一個開放框架,可擴展的開發(fā)平臺, 可以用于Java、C/C+,PHP等語言的開發(fā),本身是一個開發(fā)平臺,可以通過 擴展插件來擴展功能。在NetBeans Platform平臺中,應(yīng)用軟體是用一系列的軟體模組(Modular Software Components)建構(gòu)出來。而這些模組是一個 jar 檔(Java Archive File) 它包含了一組Java程式的類別而它們實作全依據(jù)依NetBeans定義了的公開介 面以及一系列用來區(qū)分不同模組的定義描述檔(Manifest File)。有賴於模組
26、化帶 來的好處,用模組來建構(gòu)的應(yīng)用程式可只要加上新的模組就能進一步擴充。由於 模組可以獨立地進行開發(fā),所以由NetBeans平臺開發(fā)出來的應(yīng)用程式就能利 用著第三方軟件,非常容易及有效率地進行擴充。如果用戶既要求易于進行可視 化布局,又要求有較大的靈活性,NetBeans就是最好的選擇。2.2關(guān)鍵技術(shù)C/S架構(gòu)簡介客戶機/服務(wù)器在分布處理過程中,使用基于連接的網(wǎng)絡(luò)通信模式。該通信 模式首先在客戶機和服務(wù)器之間定義一套通信協(xié)議,并創(chuàng)建一 Socket類,利用 這個類建立一條可靠的鏈接;然后,客戶機/服務(wù)器再在這條鏈接上可靠地傳輸 數(shù)據(jù)??蛻魴C發(fā)出請求,服務(wù)器監(jiān)聽來自客戶機的請求,并為客戶機提供響
27、應(yīng)服 務(wù)。這就是典型的“請求一應(yīng)答”模式。下面是客戶機/服務(wù)器的一個典型運作 過程:服務(wù)器監(jiān)聽相應(yīng)端口的輸入;客戶機發(fā)出一個請求;(3 )服務(wù)器接收到此請求;服務(wù)器處理這個請求,并把結(jié)果返回給客戶機;上述過程,直至完成一次會話過程。圖1 2層C/S結(jié)構(gòu)圖SOCKET網(wǎng)絡(luò)編程所謂socket通常也稱作套接字,應(yīng)用程序通常通過套接字向網(wǎng)絡(luò)發(fā)出 請求或者應(yīng)答網(wǎng)絡(luò)請求socket的英文原義是“孔”或“插座”。作為BSD UNIX 的進程通信,取后一種意思。用于描述IP地址和端口,是一個通信鏈的句柄。 在Internet上的主機運行了多個服務(wù)軟件,同時提供幾種服務(wù)。每種服務(wù)都打 開一個Socket,并綁
28、定到一個端口上,不同的端口對應(yīng)于不同的服務(wù)。Socket 正如其英文原意那樣,像一個多孔插座。一臺主機猶如布滿各種插座的房間,每 個插座有一個編號,有的插座提供220伏交流電,有的提供110伏交流電,有 的則提供有線電視節(jié)目。客戶軟件將插頭插到不同編號的插座,就可以得到不 同的服務(wù)。使用socket套接字,利用TCP/IP或者UDP協(xié)議,實現(xiàn)幾個機器之間的通信。 一般使用C/S結(jié)構(gòu)。以TCP/IP為例:首先建立一個服務(wù)器,步驟如下:socket ()創(chuàng)建一個socket, bind()綁定socket得到一個端口,listen()監(jiān)聽端 口,accept()等待客戶端的連接??蛻舳顺绦颍簊oc
29、ket()創(chuàng)建一個socket, 可以綁定也可以不綁定,然后connect()連接到服務(wù)器端。Socket又分為阻塞 式的和非阻塞式的。阻塞式的就是服務(wù)器端等待連接直到連接上,不然一直掛起。FTP協(xié)議簡介FTP是TCP/IP協(xié)議組中的協(xié)議之一,是英文File Transfer Protocol的 縮寫。該協(xié)議是Internet文件傳送的基礎(chǔ),它由一系列規(guī)格說明文檔組成,目 標(biāo)是提高文件的共享性,提供非直接使用遠程計算機,使存儲介質(zhì)對用戶透明和 可靠高效地傳送數(shù)據(jù)。簡單的說,F(xiàn)TP就是完成兩臺計算機之間的拷貝,從遠程 計算機拷貝文件至自己的計算機上,稱之為下載(download)”文件。若將文
30、件從自己計算機中拷貝至遠程計算機上,則稱之為“上載(upload)”文件。在 TCP/IP協(xié)議中,F(xiàn)TP標(biāo)準(zhǔn)命令TCP端口號為21,Port方式數(shù)據(jù)端口為20。從根本上說,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有一個根本的限制,那就是,如果用戶在某個主機上 沒有注冊獲得授權(quán),即沒有用戶名和口令,就不能與該主機進行
31、文件傳輸。但匿 名FTP服務(wù)器除外,它能夠使用戶與遠程主機建立連接并以匿名身份從遠程主機 上拷貝文件,而不必是該遠程主機的注冊用戶。用戶使用特殊的用戶名“Anonymous”或“guest”就可有限制地訪問遠程主機上公開的文件。現(xiàn)在許多 系統(tǒng)要求用戶將Emai1地址作為口令,以便更好地對訪問者進行跟蹤。出于安全 的目的,大部分匿名FTP主機一般只允許遠程用戶下載(download)文件,而不允 許上載(upload)文件。也就是說,用戶只能從匿名FTP主機拷貝其需要的文件而 不能把文件拷貝到匿名FTP主機。另外,匿名FTP主機還采用了其他一些保護措 施以保護自己的文件不至于被用戶修改和刪除,并
32、防止計算機病毒的侵入。匿名 FTP 一直是Internet上獲取信息資源的最主要方式,在Internet成千上萬的匿 名FTP主機中存儲著無以計數(shù)的文件,這些文件包含了各種各樣的信息、數(shù)據(jù)和 軟件。人們只要知道特定信息資源的主機地址,就可以用匿名FTP登錄。FTP客戶端設(shè)計的原理,F(xiàn)TP使用兩條TCP連接來完成文件傳輸:控制連接 與數(shù)據(jù)連接??刂七B接用于傳輸控制,數(shù)據(jù)連接用于數(shù)據(jù)輸送。在服務(wù)器啟動后, 服務(wù)器就會在端口 21等待客戶的連接請求,有用戶需要傳輸文件時,客戶與服 務(wù)器的端口 21建立一個控制連接,用來傳送客戶的命令和服務(wù)器的應(yīng)答,該連 接一直保持到客戶與服務(wù)器通信結(jié)束為當(dāng)客戶發(fā)出數(shù)
33、據(jù)傳輸命令時,服務(wù)器會主 動與客戶建立數(shù)據(jù)連接,并與其進行數(shù)據(jù)交換??蛻舳擞脩舨⒉恢苯犹幚砜刂七B接上的FTP命令和FTP響應(yīng),而是由兩個 協(xié)議解釋器進行處理。用戶接口為客戶端用戶提供一定形式的輸入界面,接收用 戶的命令,將其轉(zhuǎn)換成標(biāo)準(zhǔn)的FTP命令,最終將控制連接上的FTP響應(yīng)轉(zhuǎn)換成用 戶可理解的方式。在客戶與服務(wù)器的整個連接期間,控制連接必須保持,而數(shù)據(jù) 連接卻可以根據(jù)請求動態(tài)地建立和關(guān)閉。在最常用的流模式中,文件結(jié)束是用數(shù) 據(jù)連接的關(guān)閉來表示的,換句話說,每傳輸一個文件或文件列表,系統(tǒng)就會再建 立一個新的數(shù)據(jù)連接。圖2 FTP使用的兩個TCP連接第3章客戶端文件傳輸系統(tǒng)設(shè)計3.1客戶端需求分
34、析3.1.1用戶需求軟件要簡單易上手,能夠登錄到用戶指定的服務(wù)器上,進行訪問和數(shù)據(jù)的上 傳下載與重命名,刪除等功能。3.1.2功能需求該系統(tǒng)主要包括以下幾個方面:可視化的交互界面模塊;2.登錄服務(wù)器模塊;3.瀏覽服務(wù)器/本地目錄和 文件模塊;4.上傳/下載文件模塊。由這四個模塊構(gòu)成該系統(tǒng)。3.1.3性能需求整個系統(tǒng)操作應(yīng)當(dāng)簡便,界面友好,運行穩(wěn)定,執(zhí)行速度快。系統(tǒng)本身運 行對計算機硬件平臺和操作系統(tǒng)平臺要求適中。3.2客戶端設(shè)計3.2.1客戶端整體模塊這個部分是本文設(shè)計的中心部分,是對客戶端進行主要的功能設(shè)計和界面設(shè) 計。FTP客戶端作為用戶連接FTP服務(wù)器的工具,需要具備一些基本功能模塊,
35、如連接、上傳、下載等,其中最主要的三大功能模塊如下:1、下載功能模塊:連接用戶指定的FTP服務(wù)器,獲取服務(wù)器目錄下的文件列 表,當(dāng)用戶選擇項目為文件時,點擊下載可以下載用戶所需要的文件。選定文件 后提示用戶將文件存儲在何處,用戶選擇存儲區(qū)后開始下載任務(wù)。依靠FTP協(xié)議的支持,用戶下載的文件沒有類型和大小限制,即用戶可已選 擇任何自己想要下載的文件,通過FTP客戶端進行下載。2、上傳功能模塊:用戶可以自行選擇本機上存儲的文件,上傳至FTP服務(wù)器。 在用戶選擇存儲在服務(wù)器的位置后,點擊上傳,選擇所需要上傳的文件,即可將 文件上傳至服務(wù)器。3、連接功能模塊:將用戶本機與指定的IP地址連接,驗證用戶命
36、和密碼, 在FTP服務(wù)器上進行注冊。有了這三個基本的功能模塊,客戶端的基本應(yīng)用功能即可實現(xiàn)。如圖3.1所示:圖3 FTP 客戶端整體結(jié)構(gòu)模塊圖客戶在啟動客戶端程序后輸入相應(yīng)的登陸信息就能連接到服務(wù)器上,對服務(wù) 器上的文件進行瀏覽、新建、刪除、重命名、上傳、下載文件等操作,通過斷開 結(jié)束與服務(wù)器的連接。3.2.2客戶端流程劃分客戶端整體流程如圖4所示:3.3 ftpclient 類Java類庫的存在使它適合于一個不斷發(fā)展的環(huán)境。在類庫中我們可以自由 地加入新的方法和實例變量而不會影響用戶程序的執(zhí)行。并且Java通過接口來 支持多重繼承,使其比嚴(yán)格的類繼承具有更靈活的方式和擴展性。在處理復(fù)雜事 物
37、的時候,用到的一種基本手段就是抽象。抽象的目的就是區(qū)別事物之間的本質(zhì) 和不同,面向?qū)ο缶幊蹋∣OP)的實質(zhì)就是利用類和對象來建立抽象模型。類表 示了對象的類別,是創(chuàng)建對象的藍本。建立一個事物的抽象模型,本質(zhì)上就是表 達該事物的性質(zhì)和行為。使用類來建立抽象模型,是通過在類中定義變量和方法 來實現(xiàn)的。類中定義的屬性是一種可存儲值的變量,該變量代表著事物的具體性 質(zhì)。在J2SE中提供了與客戶端編程有關(guān)的Api,它就是. HYPERLINK ftp:/ftp.FtpClient ftp.FtpClient 類,F(xiàn)tpClient類封裝了FTP協(xié)議的相關(guān)指令與實現(xiàn)細節(jié),提供了一系列的方法, 這些方法涵蓋
38、了幾乎所有ftp的功能使用FtpClient類設(shè)計FTP客戶端程序可 以讓編程人員輕松地實現(xiàn)登錄遠程FTP服務(wù)器、瀏覽服務(wù)器上的目錄、設(shè)置傳輸 協(xié)議、上傳文件和下載文件等功能。本文所使用的FtpClient類的構(gòu)造方法和主要方法如下:Public FtpClient(String hostname)此構(gòu)造函數(shù)利用給出的主機名建立一條FTP連接,使用默認(rèn)端口號。Public void openServer(String hostname)這個方法用于建立一條與指定主機上的FTP服務(wù)器的連接,使用默認(rèn)端口號。Public void login(String username, String pas
39、sword)此方法利用參數(shù)username和password登錄到FTP服務(wù)器。使用過Intemet的用 戶應(yīng)該知道,匿名FTP服務(wù)器的登錄用戶名為anonymous,密碼一般用自己的電 子郵件地址。Public void binary():該命令可把傳輸格式設(shè)置為二進制格式。3.4實現(xiàn)思路在NetBeans環(huán)境所提供的擴展包中,已經(jīng)提供了一些網(wǎng)絡(luò)類的類庫一一 .ftp.FtpClient.,該類庫主要用于建立FTP連接的類。利用此類的方法,我 們可以遠程登錄到FTP服務(wù)器,列出該服務(wù)器上的目錄,設(shè)置傳輸協(xié)議,以及 傳送文件。FtpClient類涵蓋了幾乎所有FTP的功能,F(xiàn)tpClient的
40、實例變量保存 了有關(guān)建立代理的各種信息。當(dāng)然,還有很多此類開源的庫,可以實現(xiàn)FTP 的功能。這里我采用了 FtpClient作為此次畢業(yè)設(shè)計的資源。以下是部分FtpClient 的常用核心函數(shù)說明:FtpClient有三種不同形式的構(gòu)造函數(shù),此構(gòu)造函數(shù)將創(chuàng)建一 FtpClient類, 但不建立FTP連接。如下:public FtpClient(String hostname,int port)此構(gòu)造函數(shù)利用給出的主機名和端口號建立一條FTP連接。public FtpClient(String hostname)此構(gòu)造函數(shù)利用給出的主機名建立一條FTP連接,使用默認(rèn)端口號。FtpClient()
41、一旦建立了類FtpClient,F(xiàn)TP連接可以用openServer方法建立,這個類的 方法來打開與FTP服務(wù)器的連接。類ftpClient提供了如下兩個可用于打開與 FTP服務(wù)器之間的連接的方法。public void openServer(String hostname)此方法用于建立一條與指定主機上的FTP服務(wù)器的連接,使用默認(rèn)端口號。public void openServer(String host,int port)此方法用于建立一條與指定主機、指定端口上的FTP服務(wù)器的連接。打開連接之后,接下來的工作是注冊到FTP服務(wù)器。這時需要利用下面的方 法。此方法利用參數(shù)username和
42、password登錄到FTP服務(wù)器。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():該命令可把傳輸格式設(shè)置為二進制格式。此外,類FtpClient
43、還提供了可用于傳遞并檢索目錄清單和文件的若干方法。 這些方法返回的是可供讀或?qū)懙妮斎?、輸出流。下面是其中一些主要的方法。public TelnetInputStream list()返回與遠程機器上當(dāng)前目錄相對應(yīng)的輸入流。public TelnetInputStream get(String filename)獲取遠程機器上的文件filename,借助TelnetInputStream把該文件傳送到 本地。public TelnetOutputStream put(String filename)以寫方式打開一輸出流,通過這一輸出流把文件filename傳送到遠程計算 機。第4章文件傳輸系統(tǒng)的
44、實現(xiàn)4.1界面模塊實現(xiàn)Java是一個面向?qū)ο蟮某绦蛘Z言,它使用了很多對象,在NetBeans中使用 的是JDK庫(awt,swing),它提供了很多的界面對象,可以很直觀的看到設(shè)計的 界面。文件處理界面的設(shè)計是在jPanel2的基礎(chǔ)上實現(xiàn)的,增加了一些其他控件。 它是由兩大部分組成:FTP服務(wù)器列表,操作時信息列表。還有三個按鈕:連接, 斷開連接,下載按鈕。4.2登錄界面實現(xiàn)一般的使用辦法是,直接使用構(gòu)造方法創(chuàng)建一個FtpClient類對象(如果在 構(gòu)造FtpClient類對象時沒有設(shè)置參數(shù),則可以使用openServer方法來打開服務(wù) 器端口),然后使用login方法來登錄,并進行用戶認(rèn)證。
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(服務(wù)器:);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! ,用法:,在左邊輸入相應(yīng)信息后按【連接】按鈕,連接FTP服 務(wù)器;public int getSize() return strings.length; public Object getElementAt(int i) return stringsi; );登錄驗證服務(wù)器代碼: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服務(wù)器的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();/ 設(shè)置 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 形式 轉(zhuǎn)換成 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)系上傳者。文件的所有權(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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 煤氣免責(zé)協(xié)議書
- 三年級上冊《勞動與技術(shù)》課程設(shè)計計劃
- 質(zhì)押車合同協(xié)議
- 足浴合作協(xié)議合同模板
- 2025年中考語文教材重點分析計劃
- 2025年中國出租汽車標(biāo)志燈數(shù)據(jù)監(jiān)測研究報告
- 2025年中國不干膠窗花紙市場調(diào)查研究報告
- 供應(yīng)鏈合同管理措施與優(yōu)化策略
- 2025-2030年中國醫(yī)院行業(yè)市場深度調(diào)研及競爭格局與投資研究報告
- 2025-2030年中國化工物流行業(yè)市場發(fā)展現(xiàn)狀及競爭格局與投資前景研究報告
- ISO TR 15608-2017-中英文版完整
- 手術(shù)室常用藥物
- 數(shù)字貿(mào)易學(xué) 課件 第18、19章 全球數(shù)字經(jīng)濟治理概述、包容性發(fā)展與全球數(shù)字鴻溝
- 學(xué)校護蕾行動工作方案及計劃書
- 武漢美食介紹PPT
- 化工原理第三章過濾
- 房屋抵押個人借款標(biāo)準(zhǔn)合同
- 國家職業(yè)技術(shù)技能標(biāo)準(zhǔn) 4-07-02-05 商務(wù)數(shù)據(jù)分析師S 2024年版
- 10、工地試驗室培訓(xùn)
- 慢性阻塞性肺疾病的發(fā)病機制與藥物治療方法
- 無人機競賽理論考試全部題庫練習(xí)試卷附答案
評論
0/150
提交評論