實驗七-網(wǎng)絡(luò)程序設(shè)計綜合實驗_第1頁
實驗七-網(wǎng)絡(luò)程序設(shè)計綜合實驗_第2頁
實驗七-網(wǎng)絡(luò)程序設(shè)計綜合實驗_第3頁
免費預(yù)覽已結(jié)束,剩余14頁可下載查看

下載本文檔

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

文檔簡介

1、網(wǎng)絡(luò)程序設(shè)計實驗報告實驗名稱:win sock編程接口實驗實驗類型:設(shè)計型指導(dǎo)教師:賈浩專業(yè)班級:信安1204姓 名:馬燦學(xué) 號:20123252電子郵件:實驗地點:東6 E307實驗日期:實驗成績:實驗七網(wǎng)絡(luò)程序設(shè)計綜合實驗摘要:本課程設(shè)計包含了文件傳輸協(xié)議的簡單設(shè)計與實現(xiàn)。文件傳送協(xié)議是一種最基本的應(yīng)用層協(xié)議按照客戶/服務(wù)器的模式進行工作,提供交互式的訪問, 是INTERNET使用最廣泛的協(xié)議之一。文件傳輸協(xié)議的簡單設(shè)計與實現(xiàn)建立在計 算機網(wǎng)絡(luò)實驗環(huán)境TCP/IP網(wǎng)絡(luò)體系結(jié)構(gòu)之上,使用socket編程接口編寫兩個程 序,分別為客戶程序(client.c )和服務(wù)器程序(server.c),

2、利用了已有網(wǎng)絡(luò) 環(huán)境設(shè)計并實現(xiàn)簡單應(yīng)用層協(xié)議。本設(shè)計包括了具體設(shè)計任務(wù),基本思路及所涉 及的相關(guān)理論,設(shè)計流程圖,調(diào)試過程中出現(xiàn)的問題及相應(yīng)解決辦法,實驗運行結(jié)果,核心程序,個人體會及建議等。關(guān)鍵詞:SOCKETS程,程序一.問題描述及設(shè)計思路I. 1問題描述服務(wù)器端:1 .指定一個目錄作為FTP目錄(之后所有的文件操作均在此目錄下進行)2. 接收客戶端的命令請求并提供相應(yīng)的服務(wù)??蛻舳耍和瓿膳cFTP用戶的人機界面,以命令的方式向服務(wù)器請求服務(wù), 主要的 命令有:1 . CONNECT地址端口號2. 指定FTP服務(wù)器的IP地址和端口號,連接到服務(wù)器。響應(yīng):連接成功/失 敗。3. LOGIN用戶

3、名4. 用戶登錄(假設(shè)在服務(wù)器端有用戶管理功能)5. 響應(yīng):若用戶不存在,提示“無此用戶”;若用戶存在,提示“密碼:”;用 戶輸入密碼后,若正確提示“登錄成功”;若不成功,提示“密碼錯誤”。6. 3. DIR7. 顯示FTP服務(wù)器的FTP目錄的文件列表(假設(shè)無子目錄)8. 響應(yīng):目錄列表(只要文件名即可)。9. 4. GET文件名10. 將FTP目錄下的文件下載到本地,支持斷點續(xù)傳II. 響應(yīng):傳送成功/失敗/無此文件。12. 5 . PUT文件名13. 將本地文件上傳到FTP目錄,支持斷點續(xù)傳14. 響應(yīng):傳送成功/失敗/無此文件。15. 6 . HELP客戶端和服務(wù)器端均有該功能)16.

4、實驗環(huán)境 本次實驗采用MFC工程 工程采用MFC對話框界面 工程名稱為 MyServer 和。17. 詳細設(shè)計過程1.2設(shè)計思路1. FTP協(xié)議基礎(chǔ)FTP是TCP/IP協(xié)議組中的協(xié)議之一,該協(xié)議是In ternet文件傳送的基礎(chǔ),它由一系列規(guī)格說明文檔組成。目標是提高文件的共享性,提供非直接使用遠程計算機,使存儲介質(zhì)對用戶透明和可靠高效地傳送數(shù)據(jù)。簡單的說,F(xiàn)TP就是完成兩臺計算機之間的拷貝,從遠程計算機拷貝文件至自己的計算機上或從自己計算 機中拷貝至遠程計算機上。在TCP/IP協(xié)議中FTP標準命令TCP端口號為21, Port 方式數(shù)據(jù)端口為20。2. 網(wǎng)絡(luò)文件傳輸原理在通信的時候主要可以分

5、為兩個部分。一個部分是用于傳送控制信息,例如發(fā)送 文件的請求文件的名稱、大小等。采用MFC所提供的CSocket類的串行化技術(shù)來 實現(xiàn),而另一個部分就是文件的傳輸部分。 對于文件的傳輸,由于數(shù)據(jù)量相對來 說比較大,使用兩個線程。一個用于發(fā)送,一個用于接收。這兩個部分在具體實 現(xiàn)的時候分別建立有自己的套接字。FTP編程基礎(chǔ)3. FTP傳輸原理FTP協(xié)議使用兩條單獨的TCP連接一條專用于發(fā)送FTP命令另一條則專用于 傳遞數(shù)據(jù)。初始建立連接時 服務(wù)器在21號端口上接收來自客戶端的命令連接。當(dāng)需要傳送數(shù)據(jù)時文件列表、文件數(shù)據(jù)等客戶端向服務(wù)器發(fā)出Port命令并進入監(jiān)聽狀態(tài)等待來自服務(wù)器的數(shù)據(jù)連接請求???/p>

6、體功能模塊圖服務(wù)器端眼芬器功能說明:線程控制:線程類別:選擇線程類別,單線程或多線程傳送文件 線程數(shù)設(shè)置: 若選擇多線程,可自行設(shè)置線程數(shù)目, 若選擇單線程,則默認線程數(shù)目為1 啟動服務(wù)器:設(shè)置好線程控制后,點擊“啟動”按鈕啟動服務(wù)器端 選取文件:選擇要發(fā)送給客戶端的文件 發(fā)送文件:獲取要發(fā)送文件屬性:獲取到要傳送給客戶端的文件的基本屬性, 包括:文件名,大小(B),已發(fā)送多少(B),文件路徑發(fā)送進度顯示:顯示給客戶 端發(fā)送文件的進度 ChatWithServer :啟動采用UDP協(xié)議的簡單聊天系統(tǒng),用來與客戶端進行通 訊(客戶端和服務(wù)器端都得啟動,否則無法收到) Help :顯示服務(wù)器端使用

7、說明 客戶端/收文件握手服接收文Eever連接服頑取I? 地址HELP接收逬功能說明:握手服務(wù)器:輸入服務(wù)器端IP地址,點擊“握手服務(wù)器”按鈕,獲取服務(wù)器端 啟動的線程數(shù) 連接服務(wù)器:與服務(wù)器進行連接 接收文件:獲取接收文件屬性:獲取到要接收的服務(wù)器端傳來的文件的基本 屬性,包括:文件名,大小(B),已接收多少(B),文件存儲路徑接收進度顯示: 顯示已接收文件的進度 ChatWithServer :啟動采用UDP協(xié)議的簡單聊天系統(tǒng),用來與客戶端進行通 訊(客戶端和服務(wù)器端都得啟動,否則無法收到) 獲取IP地址:獲取本機的主機名及IP地址 HELP:顯示客戶端使用說明2、系統(tǒng)結(jié)構(gòu)即旳迪訊3、主要

8、功能流程圖(1)文件傳輸流程圖2、用例描述(1)文件傳送用例描述用例名稱:匪務(wù)器曲文件樓輸振務(wù)器端管理員設(shè)宣境程英別和啟功的城瞳敢目.啟功脈券雄,選取文I牛進行發(fā)送前薛件,腥務(wù)匝端管理員己坯運汙腥爵器端臣序1.服務(wù)翠端管理呂通過哉標點擊姥屋糞別和娃程鎖目弋拉列裊框遊行設(shè)宣,然卷點.擊*啟動”捜琨 啟動弱務(wù)器.丄點出“選取文件"搜齟,選擇鑒傳涇給容戶端的丈嘩,在文件凰性框申顯示出柏應(yīng)丈件的倍息, 點擊“發(fā)迸文件=按祀.進行文件臓.頭點去“退出”按鈕,退出尿勢器皓4. 塩擊欄幫助授袒可以宣看朋月說明5. 用例終Lt苴他李絆盍IL在搜,發(fā)送求超之前脈務(wù)樹管理罰隨時可限搜£退1/枚

9、社,鉤止與客戶嫌的誕按味終止與客 戶端之間的文件俸送.舁蓉MS:1.處示錯淇信息,文件借送失散用洌名稱:客尸嚅文件傳輸塞與若專F蓉戶輸入服勢器站ip地th鍵攙膿勞岳逬行文件攙收前貢筆件土客戶運行客戶端應(yīng)用淫序I 険務(wù)器端說擇底戶,點疋開始fi艮務(wù),則迓人醫(yī)聽杭態(tài)*等待客二端請求°:.客.=端輸入曲戶名&那若三展哥器端匹配別衽文加框口五連檳服務(wù)器.壁礙戶名.述 按尖敗則顯示“連接失敗妙3.枉口址列去框屮點士要上傳的冥件,彈出灼話征尋1可是否要上4點七是,口上傳又檔至隈 爹誥喘.幵將咒檔列盍辰示在列盍眶中.4 懸主疾止服務(wù)*則退出程睜碁他事杵眾盟;性按“捲收拶鈕Z自齊客戶曜劃可以

10、嫂停止揍收平捷超終止與肢夯器端北間的袞件件滋 在文件開始播收后,點擊“停止播收"哽迅也線lz與脈務(wù)誥端之閭的又件傳送,異常事件冷;1.現(xiàn)示錯溟信懇.文件傳遙那二功能實現(xiàn)及主要代碼服務(wù)器端啟動服務(wù),端口號為8888客戶端連接服務(wù),服務(wù)器的ip地址為連接成功添加用戶用戶驗證上傳文件2.txt,上傳到C盤刷新服務(wù)器,c盤中有2.txt,上傳成功a iDwT*,*占 TSLOGaG14/5i/5 22=062011/4/d llrOlSW3EIA#罷15014/5/19 1 空押0圧* »mpp2QU/1/17 金295014/4/8 13=1*計初2014/5/5 16=55益彌

11、鬆(C:|J !=2O12/1J/2 L3<)7-下BO)2014/5/211*12丄河.1.苫空土曲 AJPC2D14W? 2LS018 7 K.B 亠 |添加文件下載文件文件下載到E盤lit luxuryrogrjim Fi|#(20M/2Z25 2LOB衣件夾計2Olfl/lZ1012 4S2013/11/7520J2/L1/30 丄毀注2014/J/151351找圭至略瞎2沽忻2OU/4/6 21W33.a T& 4S?培將戸詮計2014/4/2& 2tt47左件耒軒X)l3/Vll 17;?0Jll dtiKtlfl2O13/W/9 15:50新譽H心|0>

12、;14/5/211427_ HP V220W (Jr)三實驗總結(jié)通過這次實驗,我很好的了解到了文件傳輸?shù)牧鞒蹋私獾轿募鬏攨f(xié)議使 得主機間可以共享文件。FTP使用TCP生成一個虛擬連接用于控制信息,然后 再生成一個單獨的TCP連接用于數(shù)據(jù)傳輸??刂七B接使用類似TELNET協(xié)議在主 機間交換命令和消息。文件傳輸協(xié)議是TCP/IP網(wǎng)絡(luò)上兩臺計算機傳送文件的協(xié)議,F(xiàn)TP是在TCP/IP網(wǎng)絡(luò)和INTERNE上最早使用的協(xié)議之一,它屬于網(wǎng)絡(luò)協(xié)議 組的應(yīng)用層。FTP客戶機可以給服務(wù)器發(fā)出命令來下載文件,上傳文件,創(chuàng)建或 改變服務(wù)器上的目錄。對套接字的使用和通信模型通信機制有了進一步了解,也 熟練的掌握了

13、如何選擇通信模型。對各個函數(shù)的使用也有了進一步了解。四附錄代碼:服務(wù)器初始化套接字BOOL C()if(m_sock = INVALID_SOCKET)m_sock = socket(AF_INET,SOCK_STREAM ,0);if(INVALID_SOCKET = m_sock)MessageBox("創(chuàng)建套接字失敗!");return FALSE;CStri ng sPort;GetDlgltem(IDC_EDIT_PORT)->GetWi ndowText(sPort);MessageBox("開啟的端口 :"+sPort);int n

14、Port = atoi(sPort);if(nPort < 1 | nPort > 65535)MessageBox(" 端口號錯誤! "); return FALSE;SOCKADDR_IN srvAddr; srvAddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY); srvAddr.sin_family = AF_INET;srvAddr.sin_port = htons(nPort); if(bind(m_sock,(SOCKADDR*)&srvAddr,sizeof(SOCKADDR)= SOCKET_ER

15、ROR) closesocket(m_sock);MessageBox(" 綁定套接字失敗 !");return FALSE;return TRUE;int count = 0;CString str10;使用異步選擇模型HCURSOR C()return (HCURSOR) m_hIcon;/ 啟動服務(wù) /void C()/ 進入監(jiān)聽狀態(tài) InitSocket();/ 設(shè)置 socket 為窗口通知消息類型/ 進入監(jiān)聽模式int m_nClient = listen(m_sock,5); if(m_nClient != 0)MessageBox("Listen

16、error!"); closesocket(m_sock); return ;/ MessageBox("Listen success!");II注冊網(wǎng)絡(luò)注冊網(wǎng)絡(luò)異步事件,m_hWnd為應(yīng)用程序的主對話框或主窗口的句柄if(:WSAAsyncSelect(m_sock, m_hWnd, WM_SOCKET,FD_ACCEPT|FD_CLOSE|FD_READ|FD_WRITE)=SOCKET_ERROR) MessageBox("WSAAsyncSelect fail!");else MessageBox("WSAAsyncSelec

17、t success!"); 客戶端 連接服務(wù)void C()II 先獲得 IP 控件的值BYTE nField0,nField1,nField2,nField3; m_IP.GetAddress(nField0, nField1,nField2, nField3); char buff20;wsprintf(buff,"%d.%d.%d.%d",nField0,nField1,nField2,nField3); MessageBox(buff);II 獲取端口號的值int port = atoi(m_port); m_sock = socket(AF_INET,S

18、OCK_STREAM ,0); if(INVALID_SOCKET = m_sock)IIMessageBox(" 創(chuàng)建套接字失敗 !");return ;II elseIIMessageBox(" 創(chuàng)建套接字成功 !");SOCKADDR_IN srvAddr;srvAddr.sin_addr.S_un.S_addr = inet_addr(buff); srvAddr.sin_family = AF_INET;srvAddr.sin_port = htons(port);II srvAddr.sin_port = htons(8888); if(:c

19、onnect(m_sock, (sockaddr*)&srvAddr, sizeof(srvAddr) = -1) MessageBox(" 連接失敗 ");return ;else MessageBox(" 連接服務(wù)器成功 ");UpdateList(); 上傳文件/上傳文件到服務(wù)器 /void C()/* if(!UserVerfify()MessageBox(" 該用戶不存在 "); return ;*/C (TRUE,NULL,NULL);if() = IDCANCEL)return;CString ; /CStrin

20、g ; / int ;文件名 文件路徑文件類型= ();C;new(, C );/ 獲取文件的名字,大小,路徑= new();+= "#" /= new();/char *pbuf = new char1024;/pbuf/memset(pbuf,0,1024);char *pbuf = new charMAXSIZE;/pbufmemset(pbuf,0,MAXSIZE);/ char pbuf1024 = 0;/ UINT nBytesRead = new( pbuf, );UINT nBytesRead = new( pbuf, MAXSIZE);為了區(qū)別文件名和傳輸

21、的內(nèi)容存儲文件內(nèi)容存儲文件內(nèi)容/ 用數(shù)字 1 表示上傳文件名的識別碼 / = "1" + ;CString pbuf1; pbuf1.Format(pbuf); = "1" + + pbuf;/ char* fName1 = (LPSTR)(LPCTSTR);/ strcat(fName1,pbuf);/此語句有問題/ MessageBox();/ MessageBox(fName1); new();if(nBytesRead >0)/ if(send(m_sock,fName1,strlen(fName1)+1,0)=SOCKET_ERROR ) if(send(m_sock,()+1,0)=SOCKET_ERROR )return; 下載文件列表 void C(NMHDR* pNMHDR, LRESULT*

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論