版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 目錄</b></p><p> 摘要..........................................................2</p><p> 關(guān)鍵詞........................................................2</p><p>
2、; 1.引言........................................................2</p><p> 2.FTP協(xié)議分析.................................................2</p><p> 2.1FTP工作原理.........................................
3、....2</p><p> 2.2FTP工作模式.............................................4</p><p> 2.3FTP傳輸模式.............................................6</p><p> 2.3.1ASCII傳輸方式....................
4、.................6</p><p> 2.3.2二進(jìn)制傳輸方式....................................6</p><p> 3.FTP客戶端的總體設(shè)計(jì).........................................6</p><p> 3.1設(shè)計(jì)目的及工具的選擇................
5、....................6</p><p> 3.1.1設(shè)計(jì)目的..........................................6</p><p> 3.1.2設(shè)計(jì)工具..........................................7</p><p> 3.1.3FtpClient類...........
6、............................7</p><p> 3.2客戶端主要模塊設(shè)計(jì)......................................7</p><p> 3.2.1客戶端功能模塊....................................8</p><p> 3.2.2客戶端界面設(shè)計(jì)..........
7、..........................9</p><p> 3.3數(shù)據(jù)流程圖..............................................9</p><p> 3.3.1客戶端連接流程圖..................................9</p><p> 3.3.2上傳子模塊流程圖........
8、..........................11</p><p> 3.3.3下載子模塊流程圖.................................12</p><p> 4.FTP客戶端程序?qū)崿F(xiàn)...........................................14</p><p> 4.1客戶端顯示界面實(shí)現(xiàn)......
9、...............................14</p><p> 4.1.1數(shù)據(jù)輸入界面詳細(xì)設(shè)計(jì).............................14</p><p> 4.1.2服務(wù)器文件信息顯示界面詳細(xì)設(shè)計(jì)...................14</p><p> 4.1.3上下載隊(duì)列顯示界面和信息顯示界面詳細(xì)設(shè)計(jì)......
10、...15</p><p> 4.1.4操作按鈕模塊詳細(xì)設(shè)計(jì).............................15</p><p> 4.2功能模塊實(shí)現(xiàn)...........................................16</p><p> 4.2.1連接服務(wù)器....................................
11、...16</p><p> 4.2.2上傳文件.........................................16</p><p> 4.2.3下載文件.........................................17</p><p> 功能運(yùn)行測(cè)試....................................
12、............17</p><p> 6.結(jié)語........................................................20</p><p> 參考文獻(xiàn)......................................................21</p><p> 附錄.............
13、.............................................22</p><p> FTP客戶端的設(shè)計(jì)與實(shí)現(xiàn)</p><p> 摘要:FTP是Internet上用來傳送文件的協(xié)議。它是為了我們能夠在Internet上互相傳送文件而制定的文件傳送標(biāo)準(zhǔn),規(guī)定了Internet上文件如何傳送。通過FTP協(xié)議,我們就可以跟Internet上的FTP服務(wù)器進(jìn)行文件的
14、上傳或下載。本文以實(shí)現(xiàn)一個(gè)簡(jiǎn)單易用的FTP客戶端為目標(biāo),通過分析FTP協(xié)議的基本工作原理和FTP的數(shù)據(jù)傳輸原理,研究如何使用Java工具對(duì)FTP客戶端進(jìn)行設(shè)計(jì),選擇Java類庫(kù)中的FtpClient類來實(shí)現(xiàn)FTP客戶端程序的上傳下載等主要功能,并用eclipse軟件提供的一個(gè)支持可視化編程的開發(fā)環(huán)境,從而實(shí)現(xiàn)了對(duì)FTP客戶端的開發(fā)。</p><p> 關(guān)鍵詞:FTP協(xié)議 ,工作原理,F(xiàn)tpClient,上傳下載
15、</p><p><b> 引言</b></p><p> 目前,F(xiàn)TP服務(wù)已經(jīng)是網(wǎng)絡(luò)上廣泛使用的一種服務(wù)了,它是建立在FTP協(xié)議上的用于網(wǎng)絡(luò)環(huán)境下進(jìn)行文件傳輸?shù)囊环N文件傳輸系統(tǒng),幾乎可以傳輸各種類型的文件,如文本文件,聲音文件,圖像文件等。一個(gè)文件傳輸系統(tǒng)有服務(wù)器端程序和客戶端程序共同組成的,客戶端程序提供用戶操作的界面并完成文件的上傳和下載。在網(wǎng)絡(luò)應(yīng)用中,F(xiàn)T
16、P有著非常重要的地位,在Internet中一個(gè)十分重要的就是資源,而各種各樣的資源大多數(shù)都是放在FTP服務(wù)器中的,為了獲得這些資源,我們必須使用FTP客戶端軟件。目前流行的有cuteFTP,WS_FTP,ByteCatcher,F(xiàn)TP Voyage等。為了方便用戶的使用,本文將介紹一種基于Java的FTP客戶端程序的設(shè)計(jì)與實(shí)現(xiàn)。 </p><p> 本文首先分析了FTP協(xié)議,F(xiàn)TP的工作原理等,然后介紹了如何使
17、用Java工具來設(shè)計(jì)和實(shí)現(xiàn)一個(gè)簡(jiǎn)單的FTP客戶端。使用本FTP客戶端,可以使用戶輕松的下載、上傳網(wǎng)絡(luò)資源。</p><p><b> FTP協(xié)議分析</b></p><p> 2.1FTP的工作原理</p><p> FTP(FileTransferProtocol),是文件傳輸協(xié)議的簡(jiǎn)稱。用于Internet上的控制文件的雙向傳輸。同時(shí)
18、,它也是一個(gè)應(yīng)用程序。用戶可以通過它把自己機(jī)器與世界各地所有運(yùn)行FTP協(xié)議的服務(wù)器相連,訪問服務(wù)器上的資源和信息。</p><p> FTP協(xié)議在TCP/IP協(xié)議棧中的位置如表1:</p><p> 表1 TCP/IP協(xié)議棧</p><p> 當(dāng)啟動(dòng)FTP從遠(yuǎn)程計(jì)算機(jī)拷貝文件時(shí),事實(shí)上啟動(dòng)了兩個(gè)程序:一個(gè)本地機(jī)器上的FTP客戶端程序,它向FTP服務(wù)器提出拷貝文
19、件的請(qǐng)求。另一個(gè)是啟動(dòng)在遠(yuǎn)程計(jì)算機(jī)的上的FTP服務(wù)器程序,它響應(yīng)請(qǐng)求把你指定的文件傳送到你的計(jì)算機(jī)中。FTP采 用“客戶端/服務(wù)器”方式,用戶要在自己的本地計(jì)算機(jī)上安裝FTP客戶端程序。</p><p> 從根本上說,F(xiàn)TP協(xié)議就是在網(wǎng)絡(luò)中各種不同的計(jì)算機(jī)之間按照TCP/IP協(xié)議來傳輸文件。FTP協(xié)議采用客戶端/服務(wù)器(Client/Sever)模式,由FTP客戶端程序和FTP服務(wù)器端程序組成。使用時(shí),先啟動(dòng)F
20、TP客戶端程序與遠(yuǎn)程主機(jī)建立連接,然后向遠(yuǎn)程主機(jī)發(fā)出傳輸命令,遠(yuǎn)程主機(jī)在收到命令后就給予響應(yīng),并執(zhí)行正確的命令。但是FTP有一個(gè)根本的限制,那就是,如果用戶在某個(gè)主機(jī)上沒有注冊(cè)獲得授權(quán),即沒有用戶名和口令,就不能與該主機(jī)進(jìn)行文件傳輸。但匿名FTP服務(wù)器除外,它能夠使用戶與遠(yuǎn)程主機(jī)建立連接并以匿名身份從遠(yuǎn)程主機(jī)上拷貝文件,而不必是該遠(yuǎn)程主機(jī)的注冊(cè)用戶。用戶使用特殊的用戶名“Anonymous”或“guest”就可有限制地訪問遠(yuǎn)程主機(jī)上公開
21、的文件?,F(xiàn)在許多系統(tǒng)要求用戶將Emai1地址作為口令,以便更好地對(duì)訪問者進(jìn)行跟綜。出于安全的目的,大部分匿名FTP主機(jī)一般只允許遠(yuǎn)程用戶下載文件,而不允許上載文件。也就是說,用戶只能從匿名FTP主機(jī)拷貝其需要的文件而不能把文件拷貝到匿名FTP主機(jī)。另外,匿名FTP主機(jī)還采用了其他一些保護(hù)措施以保護(hù)自己的文件不至于被用戶修改和刪除,并防止計(jì)算機(jī)病毒的侵</p><p> 2.2 FTP工作模式</p>
22、<p> FTP采用C/S(客戶端/服務(wù)器)模式進(jìn)行通信,但與其他的C/S模式網(wǎng)絡(luò)通信協(xié)議又有一個(gè)很大的區(qū)別。通常在進(jìn)行HTTP通信或是TELNET通信的時(shí)候,只需要一個(gè)端口進(jìn)行通信。即客戶端只需要連接一個(gè)端口進(jìn)行數(shù)據(jù)通信。如TELNET的默認(rèn)端口是23,用戶從頭到尾都只需使用這個(gè)端口。但是FTP通信除了有一個(gè)默認(rèn)端口21之外,還需要其他的端口。其中默認(rèn)端口(21)主要進(jìn)行控制連接,進(jìn)行命令協(xié)議和服務(wù)器端的響應(yīng)碼的傳輸;
23、另外一個(gè)非標(biāo)準(zhǔn)端口主要進(jìn)行數(shù)據(jù)傳遞,如文件的上載、下載等。至于非標(biāo)準(zhǔn)端口的產(chǎn)生則要根據(jù)用戶選擇的連接模式而定:如果客戶選擇的是主動(dòng)模式(PORT),則需要用戶端提供給服務(wù)器一個(gè)IP地址和一個(gè)非標(biāo)準(zhǔn)端口;而如果用戶采用被動(dòng)模式(PASV),則服務(wù)器端需要提供給客戶端一個(gè)IP地址和一個(gè)非標(biāo)準(zhǔn)端口。</p><p> 下表是幾個(gè)著名的TCP端口號(hào):</p><p><b> 表2
24、TCP端口號(hào)</b></p><p> FTP中字節(jié)大小有兩個(gè):邏輯字節(jié)大小和用于傳輸?shù)淖止?jié)大小。后者通常是8位 ,而前者可不一定是多少了。傳輸字節(jié)不必等于邏輯字節(jié)大小,也不必對(duì)數(shù)據(jù)結(jié)構(gòu)進(jìn)行解釋??刂七B接是建立在USER-PIT和SERVER-PI之間用于交換命令與應(yīng)答的通信鏈路。數(shù)據(jù)連接是傳輸數(shù)據(jù)的全雙工連接,傳輸數(shù)據(jù)可以發(fā)生在服務(wù)器DTP和用戶DTP之間也可以發(fā)生在兩個(gè)服務(wù)器DTP之間,F(xiàn)TP可
25、以傳輸非連續(xù)的文件,這些文件的一部分稱為頁(yè)。服務(wù)器DTP代表一種傳輸過程,它通常處于“主動(dòng)”狀態(tài),它和偵聽端口建立數(shù)據(jù)連接,它還可以為傳輸和存儲(chǔ)設(shè)置參數(shù),并根據(jù)PI的指令傳輸數(shù)據(jù)。當(dāng)然,DTP也可以轉(zhuǎn)入“被動(dòng)”狀態(tài)。服務(wù)器FTP進(jìn)程,它是和用戶FTP進(jìn)程一起工作的,它由PI和DTP組成。至于用戶FTP進(jìn)程則是由PI,DTP和用戶接口組成的。</p><p> 具體工作模式如圖1所示:</p>&l
26、t;p><b> FTP請(qǐng)求</b></p><p><b> FTP響應(yīng)</b></p><p><b> 數(shù)據(jù)連接</b></p><p> 服務(wù)器-FTP用戶—FTP</p><p> 圖1FTP工作模式圖</p><p>
27、; 上圖中用戶PI開始控制連接,控制連接與Telnet協(xié)議很象。在開始階段,標(biāo)準(zhǔn)FTP命令由用戶PI產(chǎn)生并通過控制連接傳送到服務(wù)器進(jìn)程。服務(wù)器PI向用戶PI返回標(biāo)準(zhǔn)應(yīng)答。FTP命令指定數(shù)據(jù)連接參數(shù)和文件系統(tǒng)操作。用戶DTP在特定數(shù)據(jù)端口偵聽,服務(wù)器開始數(shù)據(jù)連接并以指定的參數(shù)開始數(shù)據(jù)傳輸。數(shù)據(jù)端口不必在開始FTP命令的機(jī)器上,但用戶或用戶FTP進(jìn)程必須確定它在指定的數(shù)據(jù)端口上偵聽.這個(gè)數(shù)據(jù)連接是全雙工的。</p><
28、p> 2.3FTP傳輸模式</p><p> FTP協(xié)議的任務(wù)是從一臺(tái)計(jì)算機(jī)將文件傳送到另一臺(tái)計(jì)算機(jī),它與這兩臺(tái)計(jì)算機(jī)所處的位置、聯(lián)接的方式、甚至是是否使用相同的操作系統(tǒng)無關(guān)。假設(shè)兩臺(tái)計(jì)算機(jī)通過ftp協(xié)議對(duì)話,并且能訪問Internet,你可以用ftp命令來傳輸文件。每種操作系統(tǒng)使用上有某一些細(xì)微差別,但是每種協(xié)議基本的命令結(jié)構(gòu)是相同的。FTP的傳輸有兩種方式:ASCII傳輸模式和二進(jìn)制數(shù)據(jù)傳輸模式。&
29、lt;/p><p> 2.3.1 ASCII傳輸方式</p><p> 假定用戶正在拷貝的文件包含的簡(jiǎn)單ASCII碼文本,如果在遠(yuǎn)程機(jī)器上運(yùn)行的不是UNIX,當(dāng)文件傳輸時(shí)ftp通常會(huì)自動(dòng)地調(diào)整文件的內(nèi)容以便于把文件解釋成另外那臺(tái)計(jì)算機(jī)存儲(chǔ)文本文件的格式。但是常常有這樣的情況,用戶正在傳輸?shù)奈募牟皇俏谋疚募?,它們可能是程序,?shù)據(jù)庫(kù),字處理文件或者壓縮文件(盡管字處理文件包含的大部分是文
30、本,其中也包含有指示頁(yè)尺寸,字庫(kù)等信息的非打印字符)。在拷貝任何非文本文件之前,用binary命令告訴ftp逐字拷貝,不要對(duì)這些文件進(jìn)行處理。</p><p> 2.3.2二進(jìn)制傳輸方式</p><p> 在二進(jìn)制傳輸中,保存文件的位序,以便原始和拷貝的是逐位一一對(duì)應(yīng)的。即使目的地機(jī)器上包含位序列的文件是沒意義的。例如,macintosh以二進(jìn)制方式傳送可執(zhí)行文件到Windows系統(tǒng),
31、在對(duì)方系統(tǒng)上,此文件不能執(zhí)行。如果你在ASCII方式下傳輸二進(jìn)制文件,即使不需要也仍會(huì)轉(zhuǎn)譯。這會(huì)使傳輸稍微變慢,也會(huì)損壞數(shù)據(jù),使文件變得不能用。如果你知道這兩臺(tái)機(jī)器是同樣的,則二進(jìn)制方式對(duì)文本文件和數(shù)據(jù)文件都是有效的。</p><p> 3 FTP客戶端總體設(shè)計(jì)</p><p> 3.1設(shè)計(jì)目的及工具選</p><p> 3.1.1 設(shè)計(jì)目的</p>
32、;<p> FTP早已應(yīng)用在網(wǎng)絡(luò)的各個(gè)方面,比如我們?cè)谠L問網(wǎng)絡(luò)上的資源時(shí),經(jīng)常會(huì)遇到需要連接FTP服務(wù)器來下載,或者你制作了一個(gè)網(wǎng)站,想要將其上傳至服務(wù)器,讓大家能夠訪問它,這個(gè)時(shí)候就會(huì)用到FTP客戶端。雖然平時(shí)使用windows自帶的IE瀏覽器即可實(shí)現(xiàn)對(duì)FTP服務(wù)器的訪問,但是IE只是個(gè)很粗糙的FTP客戶端。IE瀏覽器在6.0以下的版本不支持PASV方式訪問服務(wù)器,而且IE瀏覽器在登錄FTP服務(wù)器的時(shí)候,無法查看返回的
33、信息,在出錯(cuò)的時(shí)候,無法找到錯(cuò)誤的原因,因此在使用上很不方便。現(xiàn)在大多數(shù)的FTP客戶端軟件都是收費(fèi)版的,而且以英文版居多,使用上操作很復(fù)雜,目前流行的有CoreFtp、AceFtp、FtpVoyager等,但是大多數(shù)用戶并不習(xí)慣使用這些軟件。本文所設(shè)計(jì)的FTP客戶端則適合大多數(shù)用戶使用,界面設(shè)計(jì)的很簡(jiǎn)單,使用戶可以一目了然,而且具備FTP客戶端的基本功能,可以作為下載、上傳文件的工具來使用。</p><p>
34、3.1.2 設(shè)計(jì)工具</p><p> 程序設(shè)計(jì)中用到的主要工具就是Java,Java是SUN公司開發(fā)的一種面向?qū)ο蟮男乱淮W(wǎng)絡(luò)編程語言,它可以在各種不同的機(jī)器、操作系統(tǒng)的網(wǎng)絡(luò)環(huán)境中進(jìn)行開發(fā),具有解釋型語言(如Basic語言)和編譯型語言(如C語言)的特性。Java摒棄了C++中各種弊大于利的功能和許多很少用到的功能,用Java開發(fā)的程序可以在網(wǎng)絡(luò)上傳輸,并運(yùn)行于任何客戶機(jī)上。使用Java語言可以方便的設(shè)計(jì)出網(wǎng)
35、絡(luò)應(yīng)用類的程序,而且Java的移植性很好,在 、其應(yīng)用程序在各種機(jī)器上都能無差別的執(zhí)行為了使FTP客戶端能適應(yīng)大多數(shù)平臺(tái)下的使用,我選擇使用Java語言來實(shí)現(xiàn)。</p><p> 3.1.3 ftpclient類</p><p> Java類庫(kù)的存在使它適合于一個(gè)不斷發(fā)展的環(huán)境。在類庫(kù)中我們可以自由地加入新的方法和實(shí)例變量而不會(huì)影響用戶程序的執(zhí)行。并且Java通過接口來支持多重繼承,使
36、其比嚴(yán)格的類繼承具有更靈活的方式和擴(kuò)展性。在處理復(fù)雜事物的時(shí)候,用到的一種基本手段就是抽象。抽象的目的就是區(qū)別事物之間的本質(zhì)和不同,面向?qū)ο缶幊蹋∣OP)的實(shí)質(zhì)就是利用類和對(duì)象來建立抽象模型。類表示了對(duì)象的類別,是創(chuàng)建對(duì)象的藍(lán)本。建立一個(gè)事物的抽象模型,本質(zhì)上就是表達(dá)該事物的性質(zhì)和行為。使用類來建立抽象模型,是通過在類中定義變量和方法來實(shí)現(xiàn)的。類中定義的屬性是一種可存儲(chǔ)值的變量,該變量代表著事物的具體性質(zhì)。</p><
37、;p> 在J2SE中提供了與客戶端編程有關(guān)的Api,它就是sun.net.ftp.FtpClient類,F(xiàn)tpClient類封裝了FTP協(xié)議的相關(guān)指令與實(shí)現(xiàn)細(xì)節(jié),提供了一系列的方法,這些方法涵蓋了幾乎所有ftp的功能使用FtpClient類設(shè)計(jì)FTP客戶端程序可以讓編程人員輕松地實(shí)現(xiàn)登錄遠(yuǎn)程FTP服務(wù)器、瀏覽服務(wù)器上的目錄、設(shè)置傳輸協(xié)議、上傳文件和下載文件等功能。</p><p> 本文所使用的FtpC
38、lient類的構(gòu)造方法和主要方法如下:1.PublicFtpClient(Stringhostname)</p><p> 此構(gòu)造函數(shù)利用給出的主機(jī)名建立一條FTP連接,使用默認(rèn)端口號(hào)。</p><p> 2.PublicvoidopenServer(Stringhostname)</p><p> 這個(gè)方法用于建立一條與指定主機(jī)上的FTP服務(wù)器的連接,使用默
39、認(rèn)端口號(hào)。</p><p> 3.Publicvoidlogin(Stringusername,Stringpassword)</p><p> 此方法利用參數(shù)username和password登錄到FTP服務(wù)器。使用過Internet的用戶應(yīng)該知道,匿名FTP服務(wù)器的登錄用戶名為anonymous,密碼一般用自己的電子郵件地址。Publicvoidbinary():該命令可把傳輸格式
40、設(shè)置為二進(jìn)制格式。</p><p> 3.2.1客戶端功能模塊</p><p> FTP客戶端作為用戶連接FTP服務(wù)器的工具,需要具備一些基本功能模塊,如連接、上傳、下載等,其中最主要的三大功能模塊如下:</p><p> 1、下載功能模塊:連接用戶指定的FTP服務(wù)器,獲取服務(wù)器目錄下的文件列表,</p><p> 當(dāng)用戶選擇項(xiàng)目為文
41、件時(shí),點(diǎn)擊下載可以下載用戶所需要的文件。選定文件后提示用戶將文件存儲(chǔ)在何處,用戶選擇存儲(chǔ)區(qū)后開始下載任務(wù)。依靠FTP協(xié)議的支持,用戶下載的文件沒有類型和大小限制,即用戶可已選擇任何自己想要下載的文件,通過FTP客戶端進(jìn)行下載。</p><p> 2、上傳功能模塊:用戶可以自行選擇本機(jī)上存儲(chǔ)的文件,上傳至FTP服務(wù)器。</p><p> 在用戶選擇存儲(chǔ)在服務(wù)器的位置后,點(diǎn)擊上傳,選擇所需
42、要上傳的文件,即可將文件上傳至服務(wù)器。</p><p> 3、連接功能模塊:將用戶本機(jī)與指定的IP地址連接,驗(yàn)證用戶命和密碼,在</p><p> FTP服務(wù)器上進(jìn)行注冊(cè)。</p><p> 有了這三個(gè)基本的功能模塊,客戶端的基本應(yīng)用功能即可實(shí)現(xiàn)。</p><p> 3.2.2客戶端界面設(shè)計(jì)</p><p>
43、 為了使用戶能夠方便的使用FTP客戶端,在設(shè)計(jì)中我將數(shù)據(jù)輸入和信息顯示整合在一個(gè)頁(yè)面中,全部客戶端僅包含一個(gè)主要的窗口,窗口中分別有以下五個(gè)界面:</p><p> 1、數(shù)據(jù)輸入界面:用來讓用戶輸入服務(wù)器地址,用戶名,密碼。</p><p> 2、服務(wù)器文件信息顯示界面:主要用來顯示服務(wù)器下存儲(chǔ)的文件,方便用戶清</p><p> 楚的了解服務(wù)器中存儲(chǔ)了哪些文
44、件。</p><p> 3、上下載隊(duì)列顯示界面:顯示正在下載或上傳的文件線程。</p><p> 4、操作按鈕界面:用戶可以通過點(diǎn)擊上傳、下載、斷開、關(guān)閉等按鈕來實(shí)現(xiàn)客</p><p><b> 戶端的具體操作。</b></p><p> 5、信息顯示界面:顯示當(dāng)前連接信息和上傳下載是否成功信息。這五個(gè)界面可以使
45、用eclipse工具下的swing控件來實(shí)現(xiàn),在布局時(shí),將界面內(nèi)的各個(gè)元素整合在一個(gè)框架中。</p><p> 設(shè)計(jì)的主界面如圖2:</p><p><b> 圖2 客戶端界面</b></p><p><b> 3.3數(shù)據(jù)流程圖</b></p><p> 3.3.1 客戶端連接流程圖<
46、/p><p> 運(yùn)行客戶端后,首先是連接服務(wù)器,需要輸入服務(wù)器IP地址及用戶名和密碼點(diǎn)擊連接按鈕后開始連接服務(wù)器。</p><p> 下圖為客戶端連接流程圖。</p><p><b> 發(fā)送用戶名及</b></p><p><b> 密碼至服務(wù)器</b></p><p>
47、<b> 是</b></p><p><b> 否</b></p><p> 圖3 客戶端連接流程圖</p><p> 連接的結(jié)果有兩種,即圖中顯示的連接失敗和連接成功。</p><p> 3.3.2 上傳子模塊流程圖</p><p> 當(dāng)用戶點(diǎn)擊上傳按鈕后,用戶
48、可以選擇需要上傳的文件,并指定上傳位置,將本機(jī)上的文件上傳至FTP服務(wù)器。下圖為上傳子模塊流程圖。</p><p><b> 是</b></p><p> 重新獲取服 務(wù)器文件列表</p><p><b> 否</b></p><p> 圖4 上傳模塊流程圖</p>&l
49、t;p> 上傳的結(jié)果有兩種,上傳失敗和成功,失敗時(shí)會(huì)提示用戶上傳失敗,原因可能是權(quán)限,如果成功上傳,則提示上傳成功。</p><p> 3.3.3 下載子模塊流程圖</p><p> 當(dāng)用戶在服務(wù)器文件列表中選擇想要下載的文件后,選擇需要下載文件在本機(jī)上</p><p> 的存儲(chǔ)位置,將服務(wù)器上的文件下載至本機(jī)。</p><p>
50、; 下圖為上傳子模塊流程圖。</p><p> 選擇文件在本機(jī)存儲(chǔ)位置</p><p><b> 將信息傳送至任務(wù)</b></p><p><b> 是</b></p><p> 重新獲取服務(wù)器文件列表</p><p><b> 否</b>
51、;</p><p><b> 圖5下載模塊流程圖</b></p><p> 4 FTP客戶端程序?qū)崿F(xiàn)</p><p> 4.1.1數(shù)據(jù)輸入界面詳細(xì)設(shè)計(jì)</p><p> 該界面用來記錄用來輸入服務(wù)器的站點(diǎn),用戶名和密碼信息,然后將信息發(fā)送到</p><p> 服務(wù)器進(jìn)行驗(yàn)證,利用Jtex
52、tfiled構(gòu)件來實(shí)現(xiàn)。客戶端一共有4個(gè)文本輸入框,分別為服務(wù)器地址輸入框url,用戶名輸入框username,密碼輸入框password 和端口號(hào)port。在程序運(yùn)行時(shí),用戶在輸入框url中輸入的FTP服務(wù)器站點(diǎn)、用戶在輸入框username中輸入的用戶名、用戶在輸入框password 中輸入密碼,用戶在端口號(hào)輸入框port中輸入端口號(hào)。利用getTEXT()函數(shù)獲取輸入框中的數(shù)據(jù),將url中的數(shù)據(jù)存儲(chǔ)至ip 中,將username中
53、的數(shù)據(jù)存儲(chǔ)至username中;如果用戶沒有在username中輸入數(shù)據(jù),則默認(rèn)為用戶使用匿名方式登錄,將用戶名設(shè)置為designpattern,password中的數(shù)據(jù)則存儲(chǔ)至password,如 果 用 戶 沒 有 在password 中輸 入 數(shù) 據(jù) , 則 默 認(rèn) 設(shè) 置 為</p><p> designpattern。</p><p> JTextField類的定義:<
54、;/p><p> JTextField url=new JTextField();服務(wù)器IP輸入框</p><p> JTextField username=new JTextField();用戶名輸入框</p><p> JTextField password=new JTextField();密碼輸入框</p><p> JTextF
55、ield port=new JTextField();端口號(hào)輸入框</p><p> 4.1.2服務(wù)器文件信息顯示界面詳細(xì)設(shè)計(jì)</p><p> 該界面的作用是是顯示服務(wù)器文件列表,利用Jscrollpane構(gòu)件來實(shí)現(xiàn)。在客戶</p><p> 端主界面創(chuàng)建一個(gè)Jscrollpane,命名為ftpFileScrollPane1,并置于主界面中間,該表格包括三個(gè)
56、數(shù)據(jù)項(xiàng):文件名file,文件大小filesizes,修改日期filedates,使用一個(gè)二維數(shù)組mydata來存儲(chǔ)這三個(gè)數(shù)據(jù)。當(dāng)客戶端連接上服務(wù)器時(shí),表格數(shù)據(jù)自動(dòng)更新,主要功能使用setTableData()函數(shù)實(shí)現(xiàn)。當(dāng)服務(wù)器連接時(shí)首先清除文件列表信息,利用removeAllElements()函數(shù)實(shí)現(xiàn),然后切換到當(dāng)前目錄,使用ftpClient類中的cd命令實(shí)現(xiàn),再使用list命令前目錄下的數(shù)據(jù)、包括目錄和文件名。</p>
57、<p> JScrollPane類的定義:</p><p> JScrollPane ftpFileScrollPane1=newJScrollPane(ftpFileInfosTable);</p><p> 4.1.3上下載隊(duì)列顯示界面和信息顯示界面詳細(xì)設(shè)計(jì)</p><p> 這兩個(gè)模塊是信息顯示模塊,使用JScrollPane和JText
58、Area構(gòu)件實(shí)現(xiàn)。其中taskScrollPan顯示上傳下載進(jìn)程信息,consoleScrollPane顯示連進(jìn)程開始 或 結(jié)束 信 息 , 將 信 息 顯示 的 文 本 域consoleTextArea放在 滾 動(dòng)條 面 板consoleScrollPane中,并且設(shè)置為不可編輯。當(dāng)客 戶 端 連 接 成 功 或 失 敗 ,上 傳 文 件 或 下 載 文 件 時(shí) , 利 用 函 數(shù)taskScrollPane.append()和con
59、soleTextArea.append()在相應(yīng)的區(qū)域顯示任務(wù)信息。</p><p> JScrollPane類的定義:</p><p> JScrollPanetaskScrollPane=newJScrollPane(taskList);</p><p> JScrollPaneconsoleScrollPane=newJScrollPane(consol
60、eTextArea);</p><p> 4.1.4操作按鈕模塊詳細(xì)設(shè)計(jì)</p><p> 操作按鈕使用JButton構(gòu)件實(shí)現(xiàn),客戶端共有連接、上傳、下載、斷開、關(guān)閉、</p><p> 上一級(jí)目、錄刷、新重命名8個(gè)操作按鈕,分別命名為connectButton、closeButton、refreshButton 、deleteButton 、 downlo
61、adButton 、 uploadButton </p><p> renameButton 、upDirButton。</p><p> JButton類的定義:</p><p> private JButton connectButton=new JButton("連接");</p><p> priva
62、te JButton closeButton=new JButton("斷開連接");</p><p> private JButton refreshButton =new JButton("刷新");</p><p> private JButton deleteButton = new JButton("刪除");
63、 </p><p> private JButton downloadButton = new JButton("下載"); </p><p> private JButton uploadButton = new JButton("上傳"); </p><p> private JButton renameButt
64、on = new JButton("重命名");</p><p> private JButton upDirButton = new JButton("上級(jí)目錄");</p><p> 每個(gè)按鈕都有自己的響應(yīng)事件來實(shí)現(xiàn)各自的功能,分別如下</p><p> 連接:connectButton.addActionList
65、ener( )...</p><p> 上傳:uploadButton.addActionListener(new ActionListener()...</p><p> 下載:downloadButton.addActionListener(new ActionListener()...</p><p> 刪除:deleteButton.addAction
66、Listener(new ActionListener()...</p><p> 斷開:closeButton.addActionListener(new ActionListener()...</p><p> 上一級(jí)目錄:upDirButton.addActionListener(new ActionListener()...</p><p> 刷新:r
67、efreshButton.addActionListener(new ActionListener()...</p><p> 重命名:renameButton.addActionListener(new ActionListener()...</p><p> 各按鈕在定義各自的響應(yīng)后,用戶在點(diǎn)擊這些按鈕時(shí),會(huì)做出相應(yīng)的處理,啟動(dòng)</p><p><b&
68、gt; 對(duì)應(yīng)的進(jìn)程。</b></p><p><b> 4.2功能模塊實(shí)現(xiàn)</b></p><p> 4.2.1連接服務(wù)器</p><p> 客戶端中FtpBean類中connect方法用來實(shí)現(xiàn)連接服務(wù)器功能,在Java中實(shí)現(xiàn)這一功能是借助FtpClient類完成的,首先是使用FtpClient類的openServer(st
69、ringserver)方法打開遠(yuǎn)程FTP服務(wù)器,然后使用FtpClient類的login(user,password)方法登錄服務(wù)器。登錄遠(yuǎn)程FTP服務(wù)器有兩種方式,一種是注冊(cè)用戶登錄,另一種是以匿名方式登錄。使用第一種方式登錄需要擁有該服務(wù)器的注冊(cè)用戶名和密碼,匿名方式則是以designpattern作為用戶名來登錄。類ftpClient提供了如下兩個(gè)可用于打開與FTP服務(wù)器之間的連接的方法</p><p>
70、 1.openServer(Stringhostname)用于建立一條與指定主機(jī)上的FTP服務(wù)器的連接,使用默認(rèn)端口號(hào):21</p><p> 2. connect(String dir, String hostname, int port, String username,String passwd) 用于建立一條與指定主機(jī)、指定端口上的FTP服務(wù)器的連接。本文所使用的是第一種方法進(jìn)行連接,首先定義4個(gè)字符串
71、,命名為ip,username,port,</p><p> password,分別用來接收來自數(shù)據(jù)輸入界面的數(shù)據(jù)。然后將接收到的數(shù)據(jù)發(fā)送至服務(wù)器驗(yàn)證,驗(yàn)證成功則使用對(duì)話框函數(shù)在信息顯示界面中提示連接成功,失敗則顯示連接失敗。</p><p><b> 4.2.2上傳文件</b></p><p> 客戶端中實(shí)現(xiàn)上傳功能的文件為FtpBea
72、n類中的uploadFile函數(shù)來實(shí)現(xiàn)。當(dāng)用戶選擇文件上傳時(shí),客戶端會(huì)創(chuàng)建一個(gè)到FTP服務(wù)器的連接,同樣使用ftpClient類的openServer()方法和login()登錄到服務(wù)器,并切換到用戶選擇的目標(biāo)目錄下,把傳輸格式設(shè)置為二 進(jìn) 制 格 式 , 將 本 地 文 件 上 傳 至FTP 服 務(wù) 器 。 上 傳 結(jié) 束 后 利 用ftpClient.closeServer()函數(shù)斷開,并更新數(shù)據(jù)表格和清除任務(wù)線程。一般情況下FTP
73、服務(wù)器為了保證其安全性,權(quán)限中會(huì)設(shè)置是否允許用戶上傳文件。上傳失敗時(shí),出錯(cuò)處理會(huì)在對(duì)話框面板中顯示出文件上傳失敗。上傳的具體代碼見附錄。</p><p><b> 4.2.3下載文件</b></p><p> 客戶端下載文件由為FtpBean類中的downloadFile函數(shù)來實(shí)現(xiàn)。如果用戶想要下載列表中的某一個(gè)文件,首先判斷項(xiàng)目的類型是否是文件,如果是文件,則得
74、到下載的文件名并下載文件,如果選中的是目錄,則不能下載。用戶選擇好要下載的文件后,客戶端打開服務(wù)器連接端口,使用ftpClient類的openServer()方法和login()登錄到服務(wù)器,把傳輸格式設(shè)置為二進(jìn)制格式,使用ftpClient.get()函數(shù)獲得文件名,下載并保存至用戶指定的路徑。下載完成后ftpClient.closeServer()關(guān)閉與服務(wù)器的連接并清除線程。當(dāng)用戶下載失敗時(shí),出錯(cuò)處理會(huì)在信息顯示面板中顯示下載出錯(cuò)
75、。下載的具體代碼見附錄。</p><p><b> 5 功能運(yùn)行測(cè)試</b></p><p> 為了驗(yàn)證程序是否能正常運(yùn)行,我選擇連接IP為122.206.79.129的FTP服務(wù)器來測(cè)試。運(yùn)行環(huán)境為windows7+eclipse。</p><p> 首先是服務(wù)器連接的驗(yàn)證:</p><p> 在服務(wù)器地址中輸
76、入122.206.79.129,在用戶名中輸入designpattern,在密碼欄中輸入designpattern,點(diǎn)擊連接按鈕后,出現(xiàn)結(jié)果如下圖:</p><p> 結(jié)果顯示連接功能實(shí)現(xiàn),服務(wù)器文件信息列表中顯示了ip為122.206.79.129的FTP服務(wù)器下的文件夾列表,信息顯示中顯示了正確的連接信息。然后是下載文件功能的測(cè)試,選擇程序設(shè)計(jì)模式封頁(yè).doc文件,點(diǎn)擊下載選擇保存至D盤,如圖:</p
77、><p> 繼續(xù)點(diǎn)擊保存按鈕,下載任務(wù)中成功添加下載任務(wù),文件下載完后,如圖:</p><p> 最后是上傳功能測(cè)試。先在本機(jī)上創(chuàng)建一個(gè)名叫“程序設(shè)計(jì)模式封頁(yè).doc”的文件,選擇上傳至跟目錄下,點(diǎn)擊上傳,顯示如圖:</p><p> 為了驗(yàn)證是否真的上傳至FTP服務(wù)器,我用網(wǎng)上鄰居訪問了IP為122.206.79.129的FTP服務(wù)器,結(jié)果如圖:</p&g
78、t;<p> 文件確實(shí)上傳成功。至此,功能驗(yàn)證已經(jīng)完畢!</p><p><b> 6 .結(jié)語</b></p><p> FTP的目標(biāo)是提高文件的共享性和可靠高效地傳送數(shù)據(jù),而FTP客戶端的作用是使用戶方便的連接和訪問FTP服務(wù)器。本文實(shí)現(xiàn)了一個(gè)簡(jiǎn)單易用的FTP客戶端,在分析FTP協(xié)議的基本工作原理和FTP的數(shù)據(jù)傳輸原理的基礎(chǔ)上,詳細(xì)介紹了如何使用
79、Java工具對(duì)FTP客戶端進(jìn)行設(shè)計(jì),選擇Java類庫(kù)來實(shí)現(xiàn)FTP客戶端程序的上傳下載等主要功能,并用eclipse軟件提供的一個(gè)支持可視化編程的開發(fā)環(huán)境,從而實(shí)現(xiàn)了對(duì)FTP客戶端的開發(fā)。雖然現(xiàn)在有很多實(shí)現(xiàn)FTP客戶端程序的技術(shù)和方法,諸如Winsock控件和Delphi的Indy組件等,但是使用Java在程序?qū)崿F(xiàn)上顯得更加簡(jiǎn)捷靈活,并具有較好的可擴(kuò)充性和可移植性,在本文中使用的方法也是比較便捷和高效的。</p><p
80、><b> 參考文獻(xiàn)</b></p><p> [1]楊錫林、張燕等.Java編程高手.北京大學(xué)出版社,2000年12月第一版</p><p> (1):169~173.</p><p> [2]葉新銘等譯.計(jì)算機(jī)網(wǎng)絡(luò)(原書第二版).機(jī)械工業(yè)出版社,2001年6月 :</p><p> 端到端協(xié)議242-
81、283.</p><p> [3]夏先波等.JAVA+JDK實(shí)例開發(fā)寶典.電子工業(yè)出版社,2001年第一版:第13</p><p> 章.網(wǎng)絡(luò)編程281~289.</p><p> [4] J. Reynolds. RequestforComments:959:FileTransferProtocol,October1985 ,</p><
82、p> :THEFTPMODEL7~8.</p><p> [5]葉俊民.軟件工程.清華大學(xué)出版社,2006年6月第一版:第3章.軟件需求</p><p> 分析基礎(chǔ)51~73.</p><p> [6]Horstmann,C.S,Cornell,G.Java2核心技術(shù).機(jī)械工業(yè)出版社,2006年3</p><p> 月第一版:
83、第6章.高級(jí)Swing279~385</p><p> [7] 楊淑萍 基于Java的FTP客戶端程序的設(shè)計(jì)與實(shí)現(xiàn) .現(xiàn)代計(jì)算機(jī).</p><p> [8] 謝希仁 計(jì)算機(jī)網(wǎng)絡(luò)(第五版) 電子工業(yè)出版社</p><p><b> 附錄:</b></p><p> 程序源碼 ,主要核心代碼:</p&
84、gt;<p> FTPFrame.java</p><p> public void connect()//連接FTP服務(wù)器</p><p><b> {</b></p><p> String s=ftp.connect("/", url.getText().toString(), Integer.p
85、arseInt(port.getText()), username.getText().toString(), password.getText().toString());</p><p> status.setText(s);</p><p><b> update();</b></p><p> if(s.equals("
86、;Success"))</p><p><b> {</b></p><p> time = new Date();</p><p> out.println(time+" 登陸服務(wù)器:"+url.getText());</p><p> connectButton.setEnabl
87、ed(false);</p><p> closeButton.setEnabled(true);</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> JOp
88、tionPane.showMessageDialog(null, s);</p><p> connectButton.setEnabled(true);</p><p> closeButton.setEnabled(false);</p><p><b> }</b></p><p><b> }&
89、lt;/b></p><p> public void uploadFile()//上傳文件</p><p><b> {</b></p><p> JFileChooser fDialog=new JFileChooser(); //文件選擇器</p><p> int result=fDialo
90、g.showOpenDialog(null);</p><p> if(result==JFileChooser.APPROVE_OPTION)</p><p><b> {</b></p><p> String file=fDialog.getSelectedFile().toString();</p><p>
91、; String targetFile=new String();</p><p> StringTokenizer st=new StringTokenizer(file,"\\");//拆分文件名</p><p> while(st.hasMoreTokens())</p><p><b> {</b><
92、/p><p> targetFile=st.nextToken();</p><p><b> }</b></p><p> boolean b=ftp.uploadFile(file,targetFile);</p><p> if(b==true)</p><p><b> {
93、</b></p><p><b> update();</b></p><p> status.setText("上傳文件"+targetFile+"成功");</p><p> JOptionPane.showMessageDialog(null, "上傳文件"+t
94、argetFile+"成功");</p><p> time = new Date();</p><p> out.println(time+" 上傳文件:"+targetFile+"成功");</p><p><b> }</b></p><p><
95、;b> else</b></p><p><b> {</b></p><p> status.setText("上傳文件"+targetFile+"失敗");</p><p> JOptionPane.showMessageDialog(null, "上傳文件&quo
96、t;+targetFile+"失敗");</p><p> out.println(time+" 上傳文件:"+targetFile+"失敗");</p><p><b> }</b></p><p><b> } </b></p><p
97、><b> }</b></p><p> public void downloadFile()//下載文件</p><p><b> {</b></p><p> if(!fileList.isSelectionEmpty())</p><p><b> {</b&
98、gt;</p><p> String targetFile=fileList.getSelectedValue().toString();//獲取所選擇的文件</p><p> JFileChooser fDialog=new JFileChooser(); //文件選擇器</p><p> int result=fDialog.showOpen
99、Dialog(null);</p><p> if(result==JFileChooser.APPROVE_OPTION)</p><p><b> {</b></p><p> ftp.downloadFile(targetFile, fDialog.getSelectedFile().toString());</p>
100、<p><b> update();</b></p><p> status.setText("下載文件"+targetFile+"成功");</p><p> JOptionPane.showMessageDialog(null, "下載文件"+targetFile+"成功&quo
101、t;);</p><p> time = new Date();</p><p> out.println(time+" 下載文件:"+targetFile);</p><p><b> }</b></p><p><b> }</b></p><p&
102、gt;<b> else</b></p><p><b> {</b></p><p> JOptionPane.showMessageDialog(null, "請(qǐng)選擇所要下載的文件");</p><p><b> }</b></p><p>&l
103、t;b> }</b></p><p> public void close(){//關(guān)閉連接</p><p> String s=ftp.close();</p><p> status.setText(s);</p><p> m.removeAllElements();</p><p>
104、 time = new Date();</p><p> out.println(time+" 離開服務(wù)器:"+url.getText());</p><p> out.close();</p><p> connectButton.setEnabled(true);</p><p> closeButton.s
105、etEnabled(false);</p><p><b> }</b></p><p> FtpBean.java</p><p><b> //打開連接</b></p><p> public String connect(String dir, String hostname, int
106、 port, String username,String passwd) </p><p><b> {</b></p><p> String msg = "";</p><p><b> try</b></p><p><b> {</b>&l
107、t;/p><p> ftpClient = new FtpClient(hostname, port);</p><p> ftpClient.login(username, passwd);</p><p> ftpClient.binary();</p><p> msg = "Success";</p>
108、;<p><b> } </b></p><p> catch (FtpLoginException e)</p><p><b> {</b></p><p> msg = "登錄主機(jī)失敗,可能是用戶名密碼錯(cuò)誤!";</p><p> ftpClient
109、=null;</p><p><b> } </b></p><p> catch (IOException e) </p><p><b> {</b></p><p> msg = "登錄主機(jī)失敗,請(qǐng)檢驗(yàn)端品是否正確!";</p><p>
110、ftpClient=null;</p><p><b> } </b></p><p> catch (SecurityException e) </p><p><b> {</b></p><p> msg = "無權(quán)連接主機(jī),主確認(rèn)是否有權(quán)限連接主機(jī)!";</
111、p><p> ftpClient=null;</p><p><b> }</b></p><p> return msg;</p><p><b> }</b></p><p><b> //上傳文件</b></p><p&g
112、t; public boolean uploadFile(String localFile, String targetFileName)</p><p><b> {</b></p><p> boolean result = false;</p><p> if (this.ftpClient == null) </p>
113、<p><b> {</b></p><p> return false;</p><p><b> }</b></p><p> TelnetOutputStream tos = null;</p><p> RandomAccessFile sendFile = null
114、;</p><p> DataOutputStream dos = null;</p><p><b> try </b></p><p><b> {</b></p><p> File file = new File(localFile);</p><p> s
115、endFile = new RandomAccessFile(file, "r");</p><p> sendFile.seek(0);</p><p> tos = this.ftpClient.put(targetFileName);</p><p> dos = new DataOutputStream(tos);</p>
116、;<p> int ch = 0;</p><p> while (sendFile.getFilePointer() < sendFile.length()) </p><p><b> {</b></p><p> ch = sendFile.read();</p><p> dos.w
117、rite(ch);</p><p><b> }</b></p><p> result = true;</p><p><b> } </b></p><p> catch (Exception ex) </p><p><b> {</b>
118、</p><p> result = false;</p><p><b> } </b></p><p><b> finally </b></p><p><b> {</b></p><p> if (tos != null) </
119、p><p><b> {</b></p><p><b> try </b></p><p><b> {</b></p><p> tos.close();</p><p><b> } </b></p>&l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)報(bào)告(ftp客戶端的設(shè)計(jì)與實(shí)現(xiàn))
- 數(shù)控技術(shù)課程設(shè)計(jì)--數(shù)控編程技術(shù)
- 網(wǎng)絡(luò)編程技術(shù)課程研究
- web課程設(shè)計(jì) 《web網(wǎng)絡(luò)編程技術(shù)》課程設(shè)計(jì)報(bào)告
- 畢設(shè)論文-ftp客戶端的實(shí)現(xiàn)
- 嵌入式ftp客戶端的設(shè)計(jì)與實(shí)現(xiàn)
- 網(wǎng)絡(luò)服務(wù)器ftp客戶端的設(shè)計(jì)與實(shí)現(xiàn)---畢業(yè)論文
- 畢業(yè)設(shè)計(jì)--簡(jiǎn)單ftp客戶端的實(shí)現(xiàn)
- 網(wǎng)絡(luò)服務(wù)器ftp客戶端的設(shè)計(jì)與實(shí)現(xiàn)---畢業(yè)論文
- 可視化編程技術(shù)課程設(shè)計(jì)(論文)-學(xué)生學(xué)籍管理系統(tǒng)
- 嵌入式FTP客戶端的設(shè)計(jì)與實(shí)現(xiàn).doc
- ftp協(xié)議的研究與客戶端實(shí)現(xiàn)
- java-web編程技術(shù)課程設(shè)計(jì)--項(xiàng)目管理系統(tǒng)
- 畢業(yè)設(shè)計(jì)--簡(jiǎn)單Ftp客戶端的實(shí)現(xiàn).doc
- FTP客戶端及服務(wù)器系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- mba論文面向無線傳感器網(wǎng)絡(luò)匯聚節(jié)點(diǎn)的ftp客戶端的設(shè)計(jì)與實(shí)現(xiàn)pdf
- 可視化編程技術(shù)課程設(shè)計(jì)-(高速公路收費(fèi)系統(tǒng))
- 個(gè)人網(wǎng)店及手機(jī)客戶端設(shè)計(jì)與開發(fā)課程設(shè)計(jì)
- 面向無線傳感器網(wǎng)絡(luò)匯聚節(jié)點(diǎn)的FTP客戶端的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 網(wǎng)絡(luò)監(jiān)控客戶端系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
評(píng)論
0/150
提交評(píng)論