




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 計(jì)算機(jī)學(xué)院計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)名稱(chēng) 基于Socket 編程的FTP 客戶(hù)端實(shí)現(xiàn) 團(tuán)隊(duì)成員:姓 名班 級(jí)學(xué) 號(hào)貢獻(xiàn)百分比得 分50%注:團(tuán)隊(duì)成員貢獻(xiàn)百分比之和為1 教師評(píng)語(yǔ):目錄 TOC o 1-3 h z u HYPERLINK l _Toc423712120 一.環(huán)境 PAGEREF _Toc423712120 h 3 HYPERLINK l _Toc423712121 二.實(shí)驗(yàn)?zāi)康?PAGEREF _Toc423712121 h 3 HYPERLINK l _Toc423712122 三.實(shí)驗(yàn)內(nèi)容及步驟(包括主要流程和說(shuō)明) PAGEREF _Toc423712122 h 3 HYP
2、ERLINK l _Toc423712123 3.1實(shí)驗(yàn)內(nèi)容 PAGEREF _Toc423712123 h 3 HYPERLINK l _Toc423712124 3.2實(shí)驗(yàn)步驟 PAGEREF _Toc423712124 h 3 HYPERLINK l _Toc423712125 3.3函數(shù)功能介紹 PAGEREF _Toc423712125 h 4 HYPERLINK l _Toc423712126 四.實(shí)驗(yàn)結(jié)果 PAGEREF _Toc423712126 h 12 HYPERLINK l _Toc423712127 五.實(shí)驗(yàn)感想 PAGEREF _Toc423712127 h 16環(huán)境
3、本實(shí)驗(yàn)在win7系統(tǒng)上完成,使用Visual Studio 2012編程環(huán)境,完成了FTP客戶(hù)端的編寫(xiě)。服務(wù)器端是下載了開(kāi)源的免費(fèi)開(kāi)源的FTP客戶(hù)端軟件FileZilla Server Interface。由于在同一臺(tái)計(jì)算機(jī)上實(shí)現(xiàn),IP位本地IP:00。實(shí)驗(yàn)?zāi)康牧私鈶?yīng)用層和運(yùn)輸層的作用及相關(guān)協(xié)議的工作原理和機(jī)制。掌握 SOCKET 編程的基本方法。實(shí)驗(yàn)內(nèi)容及步驟(包括主要流程和說(shuō)明)實(shí)驗(yàn)內(nèi)容編寫(xiě)一個(gè)FTP客戶(hù)端,要求如下:1.能夠指定FTP服務(wù)器的IP地址和端口號(hào)。2.能夠按照主動(dòng)(PORT)和被動(dòng)(PASV)兩種模式連接FTP服務(wù)器。3.支持匿名和用戶(hù)名/口令二種身份驗(yàn)證。4.能實(shí)現(xiàn)目標(biāo)FT
4、P服務(wù)器目錄上的目錄切換/瀏覽。5.能夠在上傳和下載前指定源目錄和上傳目標(biāo)目錄。6.能夠主動(dòng)斷開(kāi)連接。7.可采用控制臺(tái)或圖形用戶(hù)界面2種方式。8.提供下載上傳進(jìn)度指示和完成指示。9.具有目錄瀏覽功能實(shí)驗(yàn)步驟FTP協(xié)議整個(gè)通信過(guò)程由多個(gè)步驟構(gòu)成,從建立連接,文件傳輸?shù)綌嚅_(kāi)連接,這些不同的動(dòng)作通過(guò)FTP的指令完成。FTP會(huì)話(huà)時(shí)包含了兩個(gè)通道,一個(gè)叫控制通道,一個(gè)叫數(shù)據(jù)通道??刂仆ǖ朗呛虵TP服務(wù)器進(jìn)行溝通的通道,連接FTP,發(fā)送FTP指令都是通過(guò)控制通道來(lái)完成的,當(dāng)客戶(hù)端準(zhǔn)備于服務(wù)器建立連接時(shí),用戶(hù)需要輸入用戶(hù)名以及密碼來(lái)進(jìn)行身份驗(yàn)證。當(dāng)?shù)顷懗晒笠簿捅硎境晒⒘丝刂仆ǖ赖倪B接,端口號(hào)為21。而
5、數(shù)據(jù)通道是和FTP服務(wù)器進(jìn)行文件傳輸或者列表的通道。我們上傳下載文件都是通過(guò)這個(gè)數(shù)據(jù)通道,每次使用都需重新建立連接。FTP協(xié)議中,控制連接均有客戶(hù)端發(fā)起,而數(shù)據(jù)連接有兩種工作圖 SEQ 圖 * ARABIC 1圖 SEQ 圖 * ARABIC 1 FTP工作流程圖開(kāi)始用戶(hù)登陸,建立控制通道連接建立數(shù)據(jù)連接功能選擇關(guān)閉數(shù)據(jù)連接結(jié)束根據(jù)實(shí)驗(yàn)要求,本實(shí)驗(yàn)需要具有上傳與下載的功能,此外需要能夠更新文件列表來(lái)實(shí)現(xiàn)文件的選擇與更新,同時(shí)需要提供主動(dòng)和被動(dòng)兩種方式實(shí)現(xiàn)上述功能模塊。因此,本實(shí)驗(yàn)大體的功能模塊如圖2。圖 SEQ 圖 * ARABIC 圖 SEQ 圖 * ARABIC 2 功能選擇主動(dòng)或被動(dòng)連接
6、文件上傳文件下載關(guān)閉連接目錄選擇顯示進(jìn)度更新列表函數(shù)功能介紹OnConenct()該函數(shù)實(shí)現(xiàn)的是控制通路的連接以及用戶(hù)的登陸功能,其中調(diào)用了自己設(shè)定的兩個(gè)函數(shù)SockSend()和SockRecv()用來(lái)發(fā)送命令以及接收FTP服務(wù)器的答應(yīng)并顯示出來(lái)。通過(guò)調(diào)用特定函數(shù)獲取IP地址和PORT號(hào)后,便使用socket的conection建立連接。在建立好控制連接后便進(jìn)行用戶(hù)登陸,可以選擇匿名登陸或者用戶(hù)名登陸。通過(guò)函數(shù)SockSend()和SockRecv()與服務(wù)器進(jìn)行對(duì)話(huà),發(fā)送的命令分別是USER和PASS,核心代碼如下:Pasv()該函數(shù)實(shí)現(xiàn)了FTP的數(shù)據(jù)通路被動(dòng)連接的功能,通過(guò)向服務(wù)器發(fā)現(xiàn)P
7、ASV的指令,服務(wù)器會(huì)返回一個(gè)端口號(hào),通過(guò)這個(gè)端口號(hào)與服務(wù)器建立數(shù)據(jù)通路的連接,需注意返回的端口號(hào)要進(jìn)行轉(zhuǎn)換,部分代碼如下:Port()該函數(shù)主要是實(shí)現(xiàn)數(shù)據(jù)通路主動(dòng)連接的功能,調(diào)用SockSend()函數(shù)發(fā)送PORT命令,但是需要加上IP地址與端口號(hào),之后調(diào)用socket的listen函數(shù)等待連接。代碼如下:OnStorefile()該函數(shù)實(shí)現(xiàn)的文件上傳的功能,此函數(shù)中調(diào)用了類(lèi)CFileDialog的函數(shù),發(fā)送STOR命令通知服務(wù)器上傳文件,并用了socket的send的函數(shù)用來(lái)傳送文件。部分代碼如下:OnLoadfile()該函數(shù)主要實(shí)現(xiàn)文件下載的功能,實(shí)現(xiàn)形式大體上與文件上傳類(lèi)似,但發(fā)送的
8、是RETR命令,采用的是recv函數(shù)來(lái)接收數(shù)據(jù),部分代碼如下。OnUpdate()該函數(shù)實(shí)現(xiàn)的是列表更新的功能,發(fā)送LIST指令,將服務(wù)器發(fā)送過(guò)來(lái)的數(shù)據(jù)顯示出來(lái),方便用戶(hù)進(jìn)行選擇下載,代碼如下:OnSelectMenu() 對(duì)當(dāng)前工作目錄進(jìn)行切換,點(diǎn)擊目錄選擇按鍵會(huì)彈出路徑選擇的對(duì)話(huà)框,通過(guò)SHGetPathFromIDList(pIDList, Buffer);函數(shù)取得文件夾路徑,因?yàn)樵摵瘮?shù)獲得的是完整的路徑名,所以需對(duì)該路徑進(jìn)行處理,處理函數(shù)如下:然后通過(guò)“CWD” 命令修改當(dāng)前工作路徑:進(jìn)度條顯示在上傳/下載函數(shù)中,統(tǒng)計(jì)需要上傳/下載的文件大?。好總魉鸵粋€(gè)字節(jié),計(jì)算已傳送字節(jié)占總字節(jié)的比
9、例,按比例顯示進(jìn)度條進(jìn)度:Quit()試驗(yàn)結(jié)束后通過(guò)“QUIT”命令主動(dòng)退出:實(shí)驗(yàn)結(jié)果通過(guò)賬號(hào)+密碼登陸輸入賬號(hào)密碼后。點(diǎn)擊賬號(hào)登陸點(diǎn)擊連接服務(wù)器,顯示連接成功:匿名登錄用戶(hù)名默認(rèn)為anonymous,密碼默認(rèn)為*,點(diǎn)擊匿名登錄后點(diǎn)擊連接:被動(dòng)連接點(diǎn)擊被動(dòng)連接,顯示連接成功,左邊狀態(tài)欄顯示返回地響應(yīng)碼227:主動(dòng)連接點(diǎn)擊被動(dòng)連接,顯示連接成功,左邊狀態(tài)欄顯示返回地響應(yīng)碼200:文件上傳文件下載顯示目錄列表點(diǎn)擊更新文件列表后顯示當(dāng)前工作目錄下的文件列表:修改工作目錄點(diǎn)擊目錄選擇后,選擇一個(gè)文件夾作為當(dāng)前工作目錄,選擇完成后返回響應(yīng)碼250,說(shuō)明更改成功:選擇上傳/下載文件進(jìn)度條顯示斷開(kāi)連接點(diǎn)擊斷
10、開(kāi)連接,界面返回220:實(shí)驗(yàn)感想這次實(shí)驗(yàn)使我掌握了FTP的工作過(guò)程,同時(shí)也了解了TCP協(xié)議。實(shí)驗(yàn)開(kāi)始時(shí)我是十分茫然的,對(duì)于實(shí)驗(yàn)根本無(wú)從下手,在認(rèn)真閱讀了老師提供的文檔后,對(duì)winsocket編程函數(shù)有了一定的了解,但還是無(wú)法編譯一個(gè)程序出來(lái),在同學(xué)的幫助下,先試著了解了簡(jiǎn)單的TCP工作過(guò)程,而FTP在我看來(lái)就是TCP功能上的升級(jí)版,在圖書(shū)館借了幾本有關(guān)于網(wǎng)絡(luò)的書(shū)后,對(duì)于FTP編程有了一定的心理準(zhǔn)備,首先用MFC繪制了程序界面,這步其實(shí)很重要,因?yàn)檫@是一個(gè)總體的FTP框架,之后的過(guò)程就是往里面添加函數(shù)而已,根據(jù)書(shū)上的指導(dǎo),我一步步實(shí)現(xiàn)了之前所設(shè)定的功能,而書(shū)中沒(méi)有提到主動(dòng)連接的過(guò)程,我只好在網(wǎng)上搜索,了解到主動(dòng)連接的方式其實(shí)類(lèi)似于服務(wù)器的連接,需要用listen函數(shù)進(jìn)行監(jiān)聽(tīng),在基于TCP的服務(wù)器程序上我得到了主動(dòng)連接的函數(shù),至此,F(xiàn)TP程序基本上完成了。但是我仍然遇到了一些問(wèn)題無(wú)法解決,第一個(gè)便是在添加完更新列表的函數(shù)后,運(yùn)行時(shí)會(huì)彈出debug失敗,但是選擇忽略后程序是運(yùn)行正常的,我調(diào)試了很久也沒(méi)有解決這個(gè)問(wèn)題,另外一個(gè)問(wèn)題就是當(dāng)我都使用主動(dòng)連接的方法更新列表以及下載
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國(guó)PU色片數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)OPP購(gòu)物袋數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年中國(guó)風(fēng)機(jī)發(fā)熱架市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)紅燒排骨罐頭市場(chǎng)調(diào)查研究報(bào)告
- -教科版高中信息技術(shù)選修2教學(xué)設(shè)計(jì)-4.2 計(jì)算機(jī)動(dòng)畫(huà)技術(shù)基本原理及應(yīng)用-
- 2025年中國(guó)太陽(yáng)能恒溫蒸餾水設(shè)備市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)增強(qiáng)PTEE油封市場(chǎng)調(diào)查研究報(bào)告
- 第二單元《位置與方向(二)》第二課時(shí)教學(xué)設(shè)計(jì)-2024-2025學(xué)年人教版六年級(jí)數(shù)學(xué)上冊(cè)
- 第2單元《多邊形的面積》平行四邊形面積的計(jì)算 教學(xué)設(shè)計(jì)-2024-2025學(xué)年小學(xué)數(shù)學(xué)五年級(jí)上冊(cè)同步教學(xué)(蘇教版)
- 2024-2025學(xué)年高中歷史專(zhuān)題5無(wú)產(chǎn)階級(jí)革命1科學(xué)社會(huì)主義的創(chuàng)始人-馬克思與恩格斯一二學(xué)案人民版選修4
- 如何提升小學(xué)教學(xué)質(zhì)量
- 陜西省西安市2023-2024學(xué)年六年級(jí)上學(xué)期期末數(shù)學(xué)試卷(A卷)
- 變電站模塊化建設(shè)2.0版技術(shù)導(dǎo)則
- 無(wú)人機(jī)飛行表演合同
- 廣州市2023年中考:《道德法治》考試真題與參考答案
- 爺爺?shù)臓敔斈睦飦?lái):人類(lèi)起源的演化過(guò)程
- 公會(huì)掛靠協(xié)議
- 欒川光伏扶貧發(fā)電項(xiàng)目部qc成果
- 集裝箱房施工方案
- 人教新課標(biāo)五年級(jí)數(shù)學(xué)下冊(cè)教材解讀PPT
- 道路硬化施工方案
評(píng)論
0/150
提交評(píng)論