版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、附件1: 課程設(shè)計(學(xué)年設(shè)計、學(xué)年論文)任務(wù)書模版FTP客戶端的設(shè)計與實現(xiàn)課程設(shè)計任務(wù)書 學(xué) 院專 業(yè)網(wǎng)絡(luò)工程課程名稱題 目FTP客戶端的設(shè)計與實現(xiàn)完成期限自2014年6月9日至2014年6月16日共1周內(nèi)容及任務(wù)一、項目的目的FTP客戶端的設(shè)計與實現(xiàn)二、項目任務(wù)的主要內(nèi)容和要求遵循FTP協(xié)議,實現(xiàn)一個FTP的客戶端程序,根據(jù)賬號和密碼登錄指定的FTP服務(wù)器,可以查看服務(wù)器內(nèi)容列表,下載選定的文件,重命名或刪除指定的文件/文件夾,也可以把本地文件上傳到服務(wù)器上。三、項目設(shè)計(研究)思路FTP客戶機可以給服務(wù)器發(fā)出命令來下載文件,上載文件,創(chuàng)建或改變服務(wù)器上的目錄。FTP是一個8位的客戶端-服務(wù)
2、器協(xié)議,能操作任何類型的文件而不需要進一步處理。但是,F(xiàn)TP有著極高的延時,這意味著,從開始請求到第一次接收需求數(shù)據(jù)之間的時間會非常長,并且不時的必需執(zhí)行一些冗長的登陸進程。FTP服務(wù)一般運行在20和21兩個端口。端口20用于在客戶端和服務(wù)器之間傳輸數(shù)據(jù)流,而端口21用于傳輸控制流,并且是命令通向ftp服務(wù)器的進口。當(dāng)數(shù)據(jù)通過數(shù)據(jù)流傳輸時,控制流處于空閑狀態(tài)。而當(dāng)控制流空閑很長時間后,客戶端的防火墻會將其會話置為超時,這樣當(dāng)大量數(shù)據(jù)通過防火墻時,會產(chǎn)生一些問題。根據(jù)要求分析,對其所要實現(xiàn)的功能進行劃分實現(xiàn),首先要完成主機與服務(wù)器之間的連接與關(guān)閉操作。其次主要完成文件的顯示、新建文件、刪除文件等
3、。然后要完成主機與服務(wù)器連接成功以后文件的上傳與下載。最后要是保存一些登錄信息和一些簡單的配置信息。四、具體成果形式和要求FTP客戶端主要目標(biāo)是:促進文件的共享(計算機程序或數(shù)據(jù));鼓勵間接或者隱式的使用遠程計算機;向用戶屏蔽不同主機中各種文件存儲系統(tǒng)的細節(jié);可靠和高效的傳輸數(shù)據(jù)。要求根據(jù)賬號和密碼登錄指定的FTP服務(wù)器,可以查看服務(wù)器內(nèi)容列表,下載選定的文件,重命名或刪除指定的文件/文件夾,也可以把本地文件上傳到服務(wù)器上。進度安排起止日期工作內(nèi)容2014.6.9-6.11了解FTP的功能,查找相關(guān)資料2014.6.12-6.14對整體設(shè)計及各個功能進行實現(xiàn)、運行、調(diào)試2014.6.15-6.
4、16整理完善,寫報告并準(zhǔn)備答辯主要參考資料1. 謝希仁.計算機網(wǎng)絡(luò).北京:電子工業(yè)出版社,2012;2. 裘宗燕譯.C+設(shè)計語言.北京:機械工業(yè)出版社,2002;3. W.RichardStevens美.TCP/IP詳解卷1:協(xié)議M.范建華,胥光輝,張濤譯.北京:機械工業(yè)出版社,2005;4. 吳財軍.C#經(jīng)典范例50講M.北京:北京希望電子出版社,2003;指導(dǎo)教師意見(簽字): 年 月 日系(教研室)主任意見(簽字): 年 月 日附件2: 設(shè)計說明書(或論文)模版一、選題背景(標(biāo)題:四號仿宋加粗,頂格,行間距:24磅,上下間距:段前0.5行,段后0.5行)(內(nèi)容:用小四號仿宋,首行空兩格)
5、文件傳送是各種計算機網(wǎng)絡(luò)都實現(xiàn)的基本功能,文件傳送協(xié)議是一種最基本的應(yīng)用層協(xié)議按照客戶/服務(wù)器的模式進行工作,提供交互式的訪問,是Internet使用最廣泛的協(xié)議之一。本實驗的目的是,學(xué)會利用已有網(wǎng)絡(luò)環(huán)境設(shè)計并實現(xiàn)簡單應(yīng)用層協(xié)議,掌握TCP/IP 網(wǎng)絡(luò)應(yīng)用程序基本的設(shè)計方法和實現(xiàn)技巧。應(yīng)達到的要求是根據(jù)賬號和密碼登錄指定的FTP服務(wù)器,可以查看服務(wù)器內(nèi)容列表,下載選定的文件,重命名或刪除指定的文件/文件夾,也可以把本地文件上傳到服務(wù)器上。二、方案設(shè)計(或概要設(shè)計)流程圖如圖1圖2所示:圖1.服務(wù)器監(jiān)聽圖2.客戶端由圖1的服務(wù)器端建立一個監(jiān)聽,然后根據(jù)圖2啟動客戶端,實現(xiàn)一系列要求。三、詳細設(shè)計
6、我們的計算機網(wǎng)絡(luò)實驗環(huán)境建立在TCP/IP 網(wǎng)絡(luò)體系結(jié)構(gòu)之上。各計算機除了安裝TCP/IP 軟件外,還安裝了TCP/IP 開發(fā)系統(tǒng)。實驗室各計算機具備Windows環(huán)境中套接字socket 的編程接口功能,可為用戶提供全網(wǎng)范圍的進程通信功能。本實驗要求學(xué)生利用這些功能,設(shè)計和實現(xiàn)一個簡單的文件傳送協(xié)議。1、服務(wù)器端的主要代碼由于要實現(xiàn)多線程,必須把功能獨立出來,且包裝成線程,首先建一個監(jiān)聽線程,主要負責(zé)接入客戶,并啟動另一個客戶線程。具體程序如下:(其中包括一些說明)/包含需要用到的頭文件#include Winsock.h#include windows.h#include stdio.h#
7、include time.h#include #define RECV_PORT 2000#define SEND_PORT 3000#pragma comment(lib, wsock32.lib)/處理help命令void help() cout*COMMANDS help*endl *命令*作用*endl X或者help.顯示你提供的所有命令 endl dir.顯示遠方當(dāng)前目錄的文件 endl cd.改變遠方當(dāng)前目錄和路徑 endl 進入下級目錄: cd 路徑名 endl 進入上級目錄: cd . endl get.下載(接受)文件 endl get的用法: get 文件名 endl p
8、ut.上傳(發(fā)送)文件 endl put的用法:put 文件名 endl quit.退出 endl *endl;/處理dir命令void list(SOCKET sockfd) int nRead; while(true) nRead=recv(sock,rbuff,1024,0); if(nRead=SOCKET_ERROR) printf(read response error!n); exit(1); if(nRead=0)/數(shù)據(jù)讀取結(jié)束 break; /顯示數(shù)據(jù) rbuffnRead=0; printf(%s,rbuff); int SendFile(SOCKET datatcps,F
9、ILE* file) printf(sending file data.); for(;) /從文件中循環(huán)讀取數(shù)據(jù)并發(fā)送客戶端 int r=fread(sbuff,1,1024,file); if(send(datatcps,sbuff,r,0)=SOCKET_ERROR) printf(lost thr connection to client!n); closesocket(datatcps); return 0; if(r1024)/文件傳送結(jié)束 break; closesocket(datatcps); printf(donen); return 1;/初始化scoketDWORD S
10、tartSock()WSADATA WSAData;char a20;memset(a,0,20);if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0)printf(sock init fail!n);return (-1);if(strncmp(IIP,a,20)=0)printf(請輸入連接的主機號:);scanf(%s,&IIP);ServerAddr.sin_family=AF_INET;ServerAddr.sin_addr.s_addr=inet_addr(IIP);ServerAddr.sin_port=htons(RECV_PORT);return
11、(1);/發(fā)送連接請求DWORD CallServer() CreateSocket();if (connect(sock,(struct sockaddr *)&ServerAddr,sizeof(ServerAddr)=SOCKET_ERROR)printf(Connect fail n);memset(IIP,0,20);return(-1);return(1); /發(fā)送命令DWORD TCPSend(char data) int length;length=send(sock,data,strlen(data),0);if(lengthftLastWriteTime,&ft); SYS
12、TEMTIME lastwtime; FileTimeToSystemTime(&ft,&lastwtime); char *dir=pfd-dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY?: ; sprintf(filerecord,%04d-%02d-%02d %02d:%02d %5s %10d %-20sn, lastwtime.wYear, lastwtime.wMonth, lastwtime.wDay, lastwtime.wHour, lastwtime.wMinute, dir, pfd-nFileSizeLow, pfd-cFileNam
13、e); if(send(datatcps,filerecord,strlen(filerecord),0)=SOCKET_ERROR) printf(Error occurs when sending file list!n); return 0; return 1;int SendFileList(SOCKET datatcps) HANDLE hff; WIN32_FIND_DATA fd; /搜索文件 hff=FindFirstFile(*,&fd); if(hff=INVALID_HANDLE_VALUE)/發(fā)生錯誤 const char *errstr=cant list files
14、!n; printf(list file error!n); if(send(datatcps,errstr,strlen(errstr),0)=SOCKET_ERROR) printf(error occurs when senging file list!n); closesocket(datatcps); return 0; BOOL fMoreFiles=TRUE; while(fMoreFiles) /發(fā)送此項文件信息 if(!SendFileRecord(datatcps,&fd) closesocket(datatcps); return 0; /搜索下一個文件 fMoreFil
15、es=FindNextFile(hff,&fd); closesocket(datatcps); return 1;int SendFile(SOCKET datatcps,FILE* file) printf(sending file data.); for(;) /從文件中循環(huán)讀取數(shù)據(jù)并發(fā)送客戶端 int r=fread(sbuff,1,1024,file); if(send(datatcps,sbuff,r,0)=SOCKET_ERROR) printf(lost the connection to client!n); closesocket(datatcps); return 0;
16、if(r1024)/文件傳送結(jié)束 break; closesocket(datatcps); printf(donen); return 1;/連接DWORD ConnectProcess() Addrlen=sizeof(sockaddr_in);if(listen(sock,5)0) /連接數(shù)?printf(Listen error);return(-1);printf(Listening.n);for(;)sock1=accept(sock,(struct sockaddr FAR *)&ClientAddr,&Addrlen);for(;) memset(rbuff,0,1024);
17、memset(sbuff,0,1024); if(recv(sock1,rbuff,1024,0)0) fwrite(rbuff,sizeof(char),count,fd); fclose(fd);/putif(strncmp(rbuff,dir,3)=0)strcpy(sbuff,rbuff);send(sock1,sbuff,1024,0);SendFileList(sock1);if(strncmp(rbuff,cd,2)=0)strcpy(filename,rbuff+3); strcpy(sbuff,rbuff);send(sock1,sbuff,1024,0);SetCurren
18、tDirectory(filename);closesocket(sock1);四、結(jié)果分析(或測試)1、 客戶端啟動后一直處于監(jiān)聽狀態(tài),如圖3所示:圖3.監(jiān)聽2、再啟動服務(wù)端,然后可以進行查詢列表,上傳,下載文件。Dir命令,取得目錄后,用get命令下載目錄里的一文件,如圖4所示:圖43、選取文件上傳,如圖5所示:圖5.上傳五、結(jié)論(或總結(jié))此次FTP軟件的設(shè)計與開發(fā),從其功能上并沒有任何新的功能。僅僅是實現(xiàn)了FTP的基本功能。能獲取系統(tǒng)驅(qū)動器信息,能根據(jù)路徑來顯示你文件夾信息。能在軟件中對文件進行添加和刪除操作,及文件的上傳和下載操作。能將登錄名和密碼保存到一個文件中去。能根據(jù)別名讀取此文件,新建連接能寫入此文件中去,外觀基本上算是比較美觀。完成了基本的FTP軟件功能。FTP下載軟件開發(fā)不管是在國內(nèi)外都已經(jīng)了十分成熟的技術(shù),功能都比較齊全和不錯。但是此次課程設(shè)計的對我的最大收獲是了解并進行了Wind
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度知識產(chǎn)權(quán)授權(quán)委托書簽訂協(xié)議
- 2025年度門面出租合同終止與租賃合同終止后合同解除及違約賠償協(xié)議
- 2025年度銀行存款賬戶遠程開戶服務(wù)協(xié)議
- 2025年度私人房產(chǎn)使用權(quán)轉(zhuǎn)讓與智能家居系統(tǒng)安裝合同
- 二零二五年度農(nóng)業(yè)科技園區(qū)用地租賃合同
- 二零二五年度酒店員工福利與社會保障聘用合同
- 2025年度電動自行車租賃與品牌授權(quán)合作協(xié)議
- 二零二五年車庫購置與產(chǎn)權(quán)登記服務(wù)一體化合同樣本3篇
- 2025年度金融資產(chǎn)質(zhì)押合同生效期限及資產(chǎn)處置方式說明
- 二零二五年度證券投資法律合同
- 2024年全國體育專業(yè)單獨招生考試數(shù)學(xué)試卷試題真題(含答案)
- 北師大版小學(xué)三年級上冊數(shù)學(xué)第五單元《周長》測試卷(含答案)
- DB45T 1950-2019 對葉百部生產(chǎn)技術(shù)規(guī)程
- 2025屆河北省衡水市衡水中學(xué)高考仿真模擬英語試卷含解析
- 新修訂《保密法》知識考試題及答案
- 電工基礎(chǔ)知識培訓(xùn)課程
- 住宅樓安全性檢測鑒定方案
- 廣東省潮州市潮安區(qū)2023-2024學(xué)年五年級上學(xué)期期末考試數(shù)學(xué)試題
- 市政道路及設(shè)施零星養(yǎng)護服務(wù)技術(shù)方案(技術(shù)標(biāo))
- 《論語》學(xué)而篇-第一課件
- 《寫美食有方法》課件
評論
0/150
提交評論