摘要:分析FTP客戶端與服務(wù)器的連接過程及FTP請求與應(yīng)答工作模式。通過軟件設(shè)計,實現(xiàn)FTP客戶端程序與服務(wù)器的連接,具備上傳、下載等功能。
關(guān)鍵詞:.NET;FTP客戶端;C/S模式
DOIDOI:10.11907/rjdk.151244
中圖分類號:TP319
文獻(xiàn)標(biāo)識碼:A 文章編號:16727800(2015)006012302
作者簡介作者簡介:孟祥成(1981-),男,江蘇南京人,碩士,三江學(xué)院計算機科學(xué)與工程學(xué)院實驗師,研究方向計算機網(wǎng)絡(luò)技術(shù)。
0 引言
FTP(File Transfer Protocol,F(xiàn)TP)用于Internet控制文件的雙向傳輸。簡單來說,F(xiàn)TP就是完成兩臺不同電腦間的復(fù)制、粘貼工作。FTP既可以采用客戶端/服務(wù)器(Client/Server)模式,也可以采用瀏覽器/服務(wù)器(Browser/Server)模式。
在日常信息獲取中,網(wǎng)絡(luò)帶寬以及各種服務(wù)限制對用戶信息共享造成了一定影響,使用類似于瀏覽器的下載功能或者類似于迅雷的下載工具會受到極大限制。但是FTP可以不受其限制,其傳輸速率比基于HTTP協(xié)議的更快。FTP作為常用的文件傳輸服務(wù),有安全保障,開發(fā)者可以選擇通過SSL、SSH2等安全協(xié)議進(jìn)行安全性加密,保證數(shù)據(jù)的安全性[1]。
作為一個可以上傳與下載任何文件的傳輸協(xié)議,無論是文本、圖像、音頻、視頻都可以在此框架內(nèi)進(jìn)行共享[2]??梢酝ㄟ^FTP客戶端將數(shù)據(jù)上傳到指定的服務(wù)器或者指定的Web服務(wù)器中,需要下載時可通過客戶端從網(wǎng)絡(luò)服務(wù)器下載到本地計算機。
1 FTP系統(tǒng)需求分析與系統(tǒng)設(shè)計
本文 FTP客戶端程序?qū)崿F(xiàn)的功能不僅包括文件列表顯示、上傳、下載,還包括用戶登錄認(rèn)證、匿名訪問,此外還添加了配置文件的保存以及基本的文件與目錄識別功能。
1.1 需求分析
作為一個實用的FTP客戶端程序,基本功能必不可少,包括用戶登錄以及用戶信息驗證,此外最重要就是文件上傳與下載。
用戶使用FTP客戶端程序時,首先登錄服務(wù)器,輸入用戶名與密碼。服務(wù)器在驗證用戶名與密碼后,判斷用戶能否登上服務(wù)器,劃分用戶訪問服務(wù)器的權(quán)限。同時完成用戶隱私保護,用戶等級區(qū)分以及用戶權(quán)限識別。這樣可以根據(jù)用戶權(quán)限顯示不同文件夾,提高效率,保障安全性。
用戶使用FTP客戶端程序主要為訪問服務(wù)器,獲取或者上傳服務(wù)器文件。本文FTP客戶端系統(tǒng)采用C/S模式完成文件上傳與下載,服務(wù)器與客戶端分別完成數(shù)據(jù)連接時的信息發(fā)送與響應(yīng)返回功能,兩者配合使用,使得FTP系統(tǒng)具有較強的實用性。
此外,用戶登錄時還可以選擇使用匿名登錄功能,但是此種登錄方式使用的前提是在FTP服務(wù)器端創(chuàng)建匿名用戶。
1.2 FTP系統(tǒng)設(shè)計
FTP客戶端系統(tǒng)采用客戶端/服務(wù)器模型,客戶端與服務(wù)器各自實現(xiàn)其功能。本文著重探討FTP客戶端搭建,主要介紹FTP客戶端模塊劃分。
(1)用戶登錄模塊。用戶在客戶端程序中輸入用戶名、密碼。建立與服務(wù)器的連接,服務(wù)器自動識別該賬號的等級權(quán)限以及是否為匿名用戶。
(2)服務(wù)器文件列表顯示模塊。用戶成功登錄服務(wù)器后,顯示服務(wù)器所指定的文件目錄,并且可實現(xiàn)目錄跳轉(zhuǎn)。
(3)本地文件列表顯示模塊。打開軟件后即可顯示本地盤符中的所有文件夾以及文件,并顯示該盤符文件信息。通過下拉列表框選擇盤符跳轉(zhuǎn)。
(4)文件上傳模塊。實現(xiàn)從本地選擇文件,并通過客戶端與服務(wù)器間的數(shù)據(jù)連接將本地文件復(fù)制到文件顯示列表所顯示的當(dāng)前文件列表中。
(5)文件下載模塊。實現(xiàn)從文件顯示列表中選定需要的文件,并通過客戶端與服務(wù)器間的數(shù)據(jù)連接將文件復(fù)制到選擇的目錄中。
(6)輔助功能模塊。實現(xiàn)文件配置的保存等功能。
系統(tǒng)模塊設(shè)計圖如圖1所示。
2 基于.NET的FTP客戶端實現(xiàn)
2.1 控制連接建立
控制連接建立是FTP文件傳輸?shù)牡谝徊剑挥薪⒖刂七B接后才可以建立數(shù)據(jù)連接,并進(jìn)行文件傳輸。
2.2 用戶身份驗證
完成控制連接建立后,在獲取文件列表以及下載上傳文件之前,需要對用戶信息進(jìn)行驗證。
2.3 文件傳輸實現(xiàn)
文件傳輸功能主要通過ShowFtpFileAndDirectory()方法實現(xiàn)。首先實現(xiàn)控制連接,再通過CreateFtpWebRequest()方法建立數(shù)據(jù)連接。CreateFtpWebRequest()方法通過傳入FTP地址和.NET封裝好的字段實現(xiàn)將“LIST”命令發(fā)送至FTP服務(wù)器,再通過GetFtpResponseFTP()方法獲得FTP服務(wù)器響應(yīng)。通過這兩個方法實現(xiàn)FTP客戶端與FTP服務(wù)器之間的數(shù)據(jù)連接。FTP服務(wù)器響應(yīng)請求通過數(shù)據(jù)連接將文件列表以文件的形式返回至FTP客戶端。
2.4 文件下載實現(xiàn)
文件下載功能主要通過FilesDownLoad()方法實現(xiàn)。首先實現(xiàn)控制連接,再通過CreateFtpWebRequest()方法建立數(shù)據(jù)連接。CreateFtpWebRequest()方法通過傳入FTP地址和.NET封裝好的字段實現(xiàn)將“RETR”命令發(fā)送至FTP服務(wù)器,再通過GetFtpResponseFTP()方法獲得FTP服務(wù)器的響應(yīng)。通過這兩個方法實現(xiàn)FTP客戶端與FTP服務(wù)器的數(shù)據(jù)連接。FTP服務(wù)器響應(yīng)請求通過數(shù)據(jù)連接將文件返回至FTP客戶端。
2.5 文件上傳實現(xiàn)
文件上傳功能主要通過FilesUpLoad()方法實現(xiàn)。首先實現(xiàn)控制連接,再通過CreateFtpWebRequest()方法建立數(shù)據(jù)連接。CreateFtpWebRequest()方法通過傳入FTP地址和.NET封裝好的字段實現(xiàn)將“STOR”命令發(fā)送至FTP服務(wù)器,再通過GetFtpResponseFTP()方法獲得FTP服務(wù)器的響應(yīng)。通過這兩個方法實現(xiàn)FTP客戶端與FTP服務(wù)器的數(shù)據(jù)連接。FTP客戶端通過數(shù)據(jù)連接將文件上傳到FTP服務(wù)器。
3 系統(tǒng)測試
3.1 系統(tǒng)測試平臺建立
通過FTP客戶端訪問服務(wù)器實現(xiàn)上傳、下載文件功能,采用Visual Studio 2013開發(fā)工具執(zhí)行FTP客戶端程序編寫,并運行于Windows 7操作系統(tǒng)中。
3.2 FTP客戶端與FTP服務(wù)器互聯(lián)測試
選用網(wǎng)絡(luò)上流行的一款Xlight FTP Server作為FTP服務(wù)器來對此FTP客戶端程序進(jìn)行測試。
客戶端與服務(wù)器建立連接,輸入用戶名密碼進(jìn)行驗證,普通用戶以及匿名用戶皆能登陸成功。并且成功通過客戶端實現(xiàn)文件的上傳與下載功能,其網(wǎng)絡(luò)傳輸性能得到了保證。
4 結(jié)語
FTP客戶端程序具有一定的穩(wěn)定性,在運行過程中,可實現(xiàn)信息提示、異常處理、錯誤返回,發(fā)生錯誤時系統(tǒng)仍然可以保持其它功能的正常運行,不至于失去響應(yīng)。FTP客戶端程序主要實現(xiàn)了文件上傳、下載功能,并在一定程度上提高了文件傳輸性能,增強了計算機文件網(wǎng)絡(luò)安全性。
參考文獻(xiàn):
[1] 姚雄.一種類FTP的文件傳輸共享系統(tǒng)研究[D].武漢:華中科技大學(xué),2005.
[2] 李大紅.淺析內(nèi)網(wǎng)FTP服務(wù)器的架設(shè)[J].中國會議, 2010(12):5255.
[3] 王占軍,王偉等著.基于FTP協(xié)議的文件傳輸組件設(shè)計與實現(xiàn)[J].沈陽師范大學(xué)學(xué)報, 2012(7):13.
[4] 蔡勇.FTP服務(wù)技術(shù)研究及實現(xiàn)[D].成都:電子科技大學(xué),2005.
[5] 李杰.Linux環(huán)境下FTP系統(tǒng)的設(shè)計與實現(xiàn)[D].長春:吉林大學(xué),2012.
[6] 戴浩.基于FTP的文件定時傳輸軟件的設(shè)計與實現(xiàn) [J].計算機應(yīng)用與軟件, 2013(1):15.
責(zé)任編輯(責(zé)任編輯:陳福時)