第11章 FTP編程:Ftp服務(wù)器_第1頁
第11章 FTP編程:Ftp服務(wù)器_第2頁
第11章 FTP編程:Ftp服務(wù)器_第3頁
第11章 FTP編程:Ftp服務(wù)器_第4頁
第11章 FTP編程:Ftp服務(wù)器_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第11章FTP編程:Ftp服務(wù)器11.1FTP協(xié)議原理11.2

Ftp服務(wù)器的實(shí)現(xiàn)11.3完整的FTP軟件套件本章教學(xué)目的、要求掌握FTP工作原理、數(shù)據(jù)傳輸方式。了解FTP規(guī)范(命令及響應(yīng)嗎)。掌握兩種文件傳輸模式下服務(wù)器與客戶端的工作流程。掌握FTP重要功能的實(shí)現(xiàn)。本章教學(xué)重點(diǎn)及難點(diǎn)兩種文件傳輸模式下服務(wù)器與客戶端的工作流程。FTP重要功能的實(shí)現(xiàn)(如上傳和下載)。11.1FTP協(xié)議原理11.1.1文件傳輸?shù)闹饕δ墚?dāng)前網(wǎng)絡(luò)上絕大多數(shù)文件傳輸應(yīng)用所遵循的FTP協(xié)議標(biāo)準(zhǔn),是由RFC959定義的。在此RFC中,強(qiáng)調(diào)了文件傳輸應(yīng)當(dāng)實(shí)現(xiàn)的功能如下:提供文件(包括數(shù)據(jù)文件和程序文件)的共享。支持用戶通過應(yīng)用程序直接或間接使用遠(yuǎn)程計(jì)算機(jī)。提供一致性的協(xié)議,屏蔽各類計(jì)算機(jī)文件系統(tǒng)的差異。使用TCP確??煽壳矣行У臄?shù)據(jù)傳輸。11.1.1文件傳輸?shù)闹饕δ芟旅嬉钥蛻舳艘獜腇TP服務(wù)器上下載一個(gè)文件為例,說明FTP的完整交互過程,可用圖11.1表示。11.1.2文件傳輸模式1.主動(dòng)模式該模式表示服務(wù)器主動(dòng)連接客戶端,然后傳輸文件。2.被動(dòng)模式該模式表示服務(wù)器被動(dòng)接收客戶端連接請求,即控制連接請求和數(shù)據(jù)連接請求都由客戶端發(fā)起。11.1.3 FTP規(guī)范(1) 訪問命令USER命令格式:USER<username>功能:指定登錄的用戶名,以便服務(wù)器進(jìn)行身份驗(yàn)證。PASS命令格式:PASS<password>功能:指定用戶口令,該命令必須跟在登錄用戶名命令之后。ACCT命令格式:ACCT<account>功能:指定用戶賬號。REIN命令格式:REIN功能:表示重新初始化用戶信息。QUIT命令格式:QUIT功能:關(guān)閉與服務(wù)器的連接。11.1.3 FTP規(guī)范(2) 模式設(shè)置命令PASV命令格式:PASV功能:該命令告訴FTP服務(wù)器,讓FTP服務(wù)器在指定的數(shù)據(jù)端口進(jìn)行監(jiān)聽,進(jìn)入被動(dòng)接收請求的狀態(tài)。PORT命令格式:PORT<address>功能:該命令告訴FTP服務(wù)器,客戶端監(jiān)聽的端口號是address,讓FTP服務(wù)器采用主動(dòng)模式連接客戶端。TYPE命令格式:TYPE<datatype>功能:指定要傳輸?shù)臄?shù)據(jù)類型,有ASCII和BINARY。MODE命令格式:MODE<mode>功能:指定傳輸模式,S表示流,B表示塊,C表示壓縮。11.1.3 FTP規(guī)范(3) 文件管理命令CWD命令格式:CWD<directory>功能:改變工作目錄。PWD命令格式:PWD功能:返回當(dāng)前工作目錄。MKD命令格式:MKD<directory>功能:在指定路徑下創(chuàng)建新目錄,參數(shù)為表示特定目錄的字符串。CDUP命令格式:CDUP功能:回到上層目錄。RMD命令格式:RMD<directory>功能:刪除指定目錄。參數(shù)為表示特定目錄的字符串。11.1.3 FTP規(guī)范LIST命令格式:LIST<name>功能:返回指定路徑下的子目錄及文件列表,省略<路徑>時(shí),返回當(dāng)前路徑下的文件列表。NLST命令格式:NLST<directory>功能:返回指定路徑下的目錄列表,省略<路徑>時(shí),返回當(dāng)前目錄。RNFR命令格式:RNFR<oldpath>功能:重新命名文件,該命令的下一條命令應(yīng)該用RNTO指定新的文件名。RNTO命令格式:RNTO<newpath>功能:該命令和RNFR命令共同完成對文件的重命名,緊跟在RNFR命令后。DELE命令格式:DELE<filename>功能:刪除指定路徑下的文件11.1.3 FTP規(guī)范(4) 文件傳輸命令RETR命令格式:RETR<filename>功能:請求服務(wù)器將指定路徑內(nèi)的文件復(fù)制到客戶端,也即下載指定的文件。STOR命令格式:STOR<filename>功能:上傳一個(gè)指定的文件,并將其存儲(chǔ)在指定的位置。(5) 其他命令常用的其他命令有SYST命令,該命令沒有參數(shù),它返回服務(wù)器使用的操作系統(tǒng)。11.1.3 FTP規(guī)范2.FTP響應(yīng)碼3位數(shù)字每位都有特定的意義,詳細(xì)內(nèi)容見表11-1。應(yīng)

答說

明第1位數(shù)字1yz表示信息已被服務(wù)器正確接受,但尚未被處理。2yz表示信息已被服務(wù)器正確處理完畢。3yz表示信息已被服務(wù)器正確接受,并正在處理中。4yz表示信息處理錯(cuò)誤(暫時(shí))。5yz表示信息處理錯(cuò)誤(永久)。第2位數(shù)字x0z表示語法錯(cuò)誤。x1z表示系統(tǒng)狀態(tài)與信息。x2z表示與FTP服務(wù)器系統(tǒng)連接狀態(tài)。x3z表示與用戶認(rèn)證有關(guān)的信息。x4z表示未定義。x5z表示與文件系統(tǒng)有關(guān)的信息。11.1.3 FTP規(guī)范在實(shí)際使用時(shí),只需要知道這3位組合在一起表示什么意思就可以了。表11-2列出了部分響應(yīng)碼組合的意義。響應(yīng)碼意

義響應(yīng)碼意

義110重新啟動(dòng)標(biāo)記應(yīng)答332登錄時(shí)需要賬戶信息120服務(wù)在指定時(shí)間內(nèi)準(zhǔn)備好350請求的文件操作需要進(jìn)一步命令125數(shù)據(jù)連接打開——開始傳輸421不能提供服務(wù),關(guān)閉控制連接150文件狀態(tài)良好,將要打開數(shù)據(jù)連接425不能打開數(shù)據(jù)連接200命令成功426關(guān)閉連接,終止傳輸202命令未實(shí)現(xiàn)450請求的文件操作未執(zhí)行211系統(tǒng)狀態(tài)或系統(tǒng)幫助響應(yīng)451中止請求的操作:有本地錯(cuò)誤212目錄狀態(tài)452為執(zhí)行請求的操作:系統(tǒng)存儲(chǔ)空間不足213文件狀態(tài)500格式錯(cuò)誤,命令不可識別214幫助信息,信息僅對用戶有用501語法錯(cuò)誤215名字系統(tǒng)類型502命令未實(shí)現(xiàn)220對新用戶的服務(wù)已就緒503命令順序錯(cuò)誤221服務(wù)關(guān)閉控制連接,可以退出登錄504此參數(shù)下的命令功能未實(shí)現(xiàn)225數(shù)據(jù)連接打開,無傳輸正在進(jìn)行530未登錄226關(guān)閉數(shù)據(jù)連接,請求的文件操作成功532存儲(chǔ)文件需要賬戶信息227進(jìn)入被動(dòng)模式550未執(zhí)行請求的操作230用戶已登錄551請求操作終止:頁類型未知250請求的文件操作完成552請求的文件操作終止,存儲(chǔ)分配溢出257創(chuàng)建PATHNAME553未執(zhí)行請求的操作:文件名不合法331用戶名正確,需要口令11.1.3 FTP規(guī)范(1) 登錄USER命令PASS命令A(yù)CCT命令(2) 設(shè)置PORT命令PASV命令TYPE命令(3) 文件管理CWD命令PWD命令LIST、NLIST命令DELE命令(4) 文件傳輸RETR命令STOR命令(5) 退出11.2Ftp服務(wù)器的實(shí)現(xiàn)11.2.1界面設(shè)計(jì)本章的Ftp服務(wù)器仍然沿用上一章Web服務(wù)器的界面風(fēng)格,設(shè)計(jì)如圖11.2所示。11.2.1界面設(shè)計(jì)軟件工程名為“MyFtpServer”,程序界面上各控件的屬性描述見表11-3所示。Name控件類型功能描述frmFtpServerForm程序主窗體listBoxStatusViewListBox服務(wù)狀態(tài)監(jiān)控區(qū)tbxFtpServerIpTextBox填寫服務(wù)IP地址tbxFtpServerPortTextBox服務(wù)端口號(ftp默認(rèn)為21)tbxFtpRootTextBox設(shè)置填寫ftp主目錄btnStartStopButton服務(wù)【啟動(dòng)/停止】按鈕11.2.2 FTP編程線程ListTh是用來監(jiān)聽和處理客戶端連接請求的,當(dāng)一個(gè)請求被接受之后,服務(wù)器就專門為其另啟一個(gè)線程t,該線程通過執(zhí)行UserProcessing()方法來向用戶提供FTP服務(wù),其實(shí)現(xiàn)代碼。11.2.2 FTP編程1.用戶身份確認(rèn)每一個(gè)用戶在使用FTP服務(wù)之前都必須先登錄,進(jìn)行身份確認(rèn)后方可進(jìn)一步操作。FTP身份確認(rèn)的流程如圖11.4所示。11.2.2 FTP編程同時(shí)服務(wù)器要求用戶輸入登錄賬號,用戶輸入賬號并按下Enter鍵后,客戶端則傳輸“USER<username>”的信息至FTP服務(wù)器,服務(wù)器調(diào)用CommandUser()方法對信息進(jìn)行處理:

//處理

USER命令,接收用戶名但暫不進(jìn)行驗(yàn)證 privatevoidCommandUser(Useruser,stringcommand,stringparam) { stringsendString=string.Empty; if(command=="USER") {

sendString="331USERcommandOK,passwordrequired.";

user.userName=param;

user.LoginOK=1;//1表示已接收到用戶名,等待接收密碼 } else {

sendString="501USERcommandsyntaxerror."; }

ReplyCommandToUser(user,sendString); }11.2.2 FTP編程于是客戶端程序傳輸“PASS<password>”信息至服務(wù)器,服務(wù)器調(diào)用CommandPassword()方法驗(yàn)證用戶名和密碼。本程序在用戶身份確認(rèn)階段,屏幕上的狀態(tài)監(jiān)控信息如圖11.5所示。11.2.2 FTP編程2.數(shù)據(jù)傳輸下面以下載文件為例來說明數(shù)據(jù)傳輸?shù)倪^程,其流程如圖11.6所示。11.2.2 FTP編程客戶端又是如何得知服務(wù)器開放的究竟是哪一個(gè)端口的呢?當(dāng)然是服務(wù)器告訴它的。服務(wù)器在收到PASV命令后,調(diào)用CommandPASV()方法進(jìn)行處理。程序運(yùn)行時(shí),屏幕上的狀態(tài)監(jiān)控信息如圖11.7所示。11.2.2 FTP編程3.結(jié)束FTP流程如圖11.8所示。11.2.2 FTP編程當(dāng)數(shù)據(jù)傳輸結(jié)束后,如不需要再進(jìn)行其他文件傳輸和操作,則FTP客戶端發(fā)送QUIT命令,要求結(jié)束FTP連接。FTP服務(wù)器端則發(fā)回響應(yīng)信息,表示結(jié)束連接。 if(command=="QUIT") { //關(guān)閉

TCP連接并釋放與其關(guān)聯(lián)的所有資源

mandSession.Close(); return; }11.3完整的FTP軟件套件11.3.1FTP上傳下載器的改造打開已經(jīng)做好了的FTP客戶端(SelftpUpDownloader)項(xiàng)目工程,修改其代碼。11.3.2自制FTP客戶端與服務(wù)器的對接實(shí)驗(yàn)1.創(chuàng)建和訪問本地FTP站點(diǎn)在E:\盤下新建文件夾MyFtpServerRoot,在其中創(chuàng)建目錄結(jié)構(gòu)并放置一些文件資源,如圖11.9所示。11.3.2自制FTP客戶端與服務(wù)器的對接實(shí)驗(yàn)一個(gè)本地FTP站點(diǎn)就創(chuàng)建好了。運(yùn)行FTP服務(wù)器,可以看到服務(wù)器默認(rèn)的主目錄為“E:\MyFtpServerRoot”(正是我們剛剛創(chuàng)建的目錄),見圖11.10。11.3.2自制FTP客戶端與服務(wù)器的對接實(shí)驗(yàn)運(yùn)行經(jīng)過改造后的FTP上傳下載器SelftpUpDownloader,取消選擇【匿名】復(fù)選框,輸入用戶名和密碼(默認(rèn)都是admin),單擊【登錄】,如圖11.11所示。11.3.2自制FTP客戶端與服務(wù)器的對接實(shí)驗(yàn)從服務(wù)器狀態(tài)屏幕上可以看到當(dāng)前默認(rèn)的主目錄為E:/MyFtpServerRoot/,見圖11.12。11.3.2自制FTP客戶端與服務(wù)器的對接實(shí)驗(yàn)2.通過FTP分享圖片在創(chuàng)建的本地FTP站點(diǎn)上有兩個(gè)文件夾(分別名為“王保兵”和“徐鶴鶴”),接下來就用這兩個(gè)文件夾模擬兩個(gè)用戶來做實(shí)驗(yàn),先在每個(gè)文件夾下建立各自的目錄結(jié)構(gòu),如圖11.13所示。11.3.2自制FTP客戶端與服務(wù)器的對接實(shí)驗(yàn)在王保兵目錄的“圖片收藏”文件夾下,新建一個(gè)“美人魚”文件夾,存入兩張精美的人魚公主圖片(圖11.14)。11.3.2自制FTP客戶端與服務(wù)器的對接實(shí)驗(yàn)初始時(shí),徐鶴鶴的照片子文件夾中并沒有東西(圖11.15)。11.3.2自制FTP客戶端與服務(wù)器的對接實(shí)驗(yàn)用鼠標(biāo)雙擊任一個(gè)目錄,就可

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論