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