




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
網(wǎng)絡(luò)程序設(shè)計實驗報告 實驗名稱:winsock編程接口實驗實驗類型:設(shè)計型指導教師:賈浩專業(yè)班級:信安1204姓名:馬燦學號:20123252電子郵件:實驗地點:東6E307實驗日期:
實驗成績:__________________________
實驗七網(wǎng)絡(luò)程序設(shè)計綜合實驗摘要:本課程設(shè)計包含了文件傳輸協(xié)議的簡單設(shè)計與實現(xiàn)。文件傳送協(xié)議是一種最基本的應用層協(xié)議按照客戶/服務器的模式進行工作,提供交互式的訪問,是INTERNET使用最廣泛的協(xié)議之一。文件傳輸協(xié)議的簡單設(shè)計與實現(xiàn)建立在計算機網(wǎng)絡(luò)實驗環(huán)境TCP/IP網(wǎng)絡(luò)體系結(jié)構(gòu)之上,使用socket編程接口編寫兩個程序,分別為客戶程序(client.c)和服務器程序(server.c),利用了已有網(wǎng)絡(luò)環(huán)境設(shè)計并實現(xiàn)簡單應用層協(xié)議。本設(shè)計包括了具體設(shè)計任務,基本思路及所涉及的相關(guān)理論,設(shè)計流程圖,調(diào)試過程中出現(xiàn)的問題及相應解決辦法,實驗運行結(jié)果,核心程序,個人體會及建議等。關(guān)鍵詞:SOCKET編程,F(xiàn)TPclient/server程序一.問題描述及設(shè)計思路1.1問題描述服務器端:1.指定一個目錄作為FTP目錄(之后所有的文件操作均在此目錄下進行)2.接收客戶端的命令請求并提供相應的服務??蛻舳耍和瓿膳cFTP用戶的人機界面,以命令的方式向服務器請求服務,主要的命令有:1.CONNECTIP地址端口號2.指定FTP服務器的IP地址和端口號,連接到服務器。響應:連接成功/失敗。3.LOGIN用戶名4.用戶登錄(假設(shè)在服務器端有用戶管理功能)5.響應:若用戶不存在,提示“無此用戶”;若用戶存在,提示“密碼:”;用戶輸入密碼后,若正確提示“登錄成功”;若不成功,提示“密碼錯誤”。6.3.DIR7.顯示FTP服務器的FTP目錄的文件列表(假設(shè)無子目錄)8.響應:目錄列表(只要文件名即可)。9.4.GET文件名10.將FTP目錄下的文件下載到本地,支持斷點續(xù)傳11.響應:傳送成功/失敗/無此文件。12.5.PUT文件名13.將本地文件上傳到FTP目錄,支持斷點續(xù)傳14.響應:傳送成功/失敗/無此文件。15.6.HELP(客戶端和服務器端均有該功能)16.實驗環(huán)境本次實驗采用MFC工程工程采用MFC對話框界面工程名稱為MyServer和FTPSOCKET。17.詳細設(shè)計過程1.2設(shè)計思路1.FTP協(xié)議基礎(chǔ)3、主要功能流程圖(1)文件傳輸流程圖2、用例描述(1)文件傳送用例描述二.功能實現(xiàn)及主要代碼服務器端啟動服務,端口號為8888客戶端連接服務,服務器的ip地址為15連接成功添加用戶用戶驗證上傳文件2.txt,上傳到C盤刷新服務器,c盤中有2.txt,上傳成功添加文件下載文件文件下載到E盤三實驗總結(jié)通過這次實驗,我很好的了解到了文件傳輸?shù)牧鞒?,了解到文件傳輸協(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ò)和INTERNET上最早使用的協(xié)議之一,它屬于網(wǎng)絡(luò)協(xié)議組的應用層。FTP客戶機可以給服務器發(fā)出命令來下載文件,上傳文件,創(chuàng)建或改變服務器上的目錄。對套接字的使用和通信模型通信機制有了進一步了解,也熟練的掌握了如何選擇通信模型。對各個函數(shù)的使用也有了進一步了解。四附錄代碼:服務器初始化套接字BOOLCFTPServerDlg::InitSocket(){ if(m_sock==INVALID_SOCKET) { m_sock=socket(AF_INET,SOCK_STREAM,0); } if(INVALID_SOCKET==m_sock) { MessageBox("創(chuàng)建套接字失敗!"); returnFALSE; } CStringsPort; GetDlgItem(IDC_EDIT_PORT)->GetWindowText(sPort); MessageBox("開啟的端口:"+sPort); intnPort=atoi(sPort); if(nPort<1||nPort>65535) { MessageBox("端口號錯誤!"); returnFALSE; } SOCKADDR_INsrvAddr; 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_ERROR) { closesocket(m_sock); MessageBox("綁定套接字失敗!"); returnFALSE; } returnTRUE;}FileInfofile[10];intcount=0;CStringstr[10];使用異步選擇模型HCURSORCFTPServerDlg::OnQueryDragIcon(){ return(HCURSOR)m_hIcon;}//-----------------------------啟動服務----------------------//voidCFTPServerDlg::OnStart(){ //進入監(jiān)聽狀態(tài) InitSocket(); //設(shè)置socket為窗口通知消息類型 //進入監(jiān)聽模式 intm_nClient=listen(m_sock,5); if(m_nClient!=0) { MessageBox("Listenerror!"); closesocket(m_sock); return; } // MessageBox("Listensuccess!"); //注冊網(wǎng)絡(luò)注冊網(wǎng)絡(luò)異步事件,m_hWnd為應用程序的主對話框或主窗口的句柄 if(::WSAAsyncSelect(m_sock,m_hWnd,WM_SOCKET, FD_ACCEPT|FD_CLOSE|FD_READ|FD_WRITE)==SOCKET_ERROR) { MessageBox("WSAAsyncSelectfail!"); } else { MessageBox("WSAAsyncSelectsuccess!"); } 客戶端連接服務voidCFTPClientDlg::OnConnect(){//先獲得IP控件的值BYTEnField0,nField1,nField2,nField3; m_IP.GetAddress(nField0,nField1,nField2,nField3); charbuff[20]; wsprintf(buff,"%d.%d.%d.%d",nField0,nField1,nField2,nField3); MessageBox(buff); //獲取端口號的值 intport=atoi(m_port); m_sock=socket(AF_INET,SOCK_STREAM,0); if(INVALID_SOCKET==m_sock) { // MessageBox("創(chuàng)建套接字失敗!"); return; } // else // MessageBox("創(chuàng)建套接字成功!"); SOCKADDR_INsrvAddr; srvAddr.sin_addr.S_un.S_addr=inet_addr(buff); srvAddr.sin_family=AF_INET;srvAddr.sin_port=htons(port); // srvAddr.sin_port=htons(8888); if(::connect(m_sock,(sockaddr*)&srvAddr,sizeof(srvAddr))==-1) { MessageBox("連接失敗"); return; } else MessageBox("連接服務器成功"); UpdateList();}上傳文件//-----------------------上傳文件到服務器--------------------------//voidCFTPClientDlg::OnPutFile(){/* if(!UserVerfify()) { MessageBox("該用戶不存在"); return; }*/ CFileDialogfileDlg(TRUE,NULL,NULL);if(fileDlg.DoModal()==IDCANCEL) return; CStringfileName,filePath;//文件名文件路徑 CStringfileType;//文件類型intfileLength; filePath=fileDlg.GetPathName(); CFilenewFile;newFile.Open(filePath,CFile::modeRead|CFile::modeReadWrite); //獲取文件的名字,大小,路徑 fileName=newFile.GetFileName(); fileName+="#";//為了區(qū)別文件名和傳輸?shù)膬?nèi)容 fileLength=newFile.GetLength(); // char*pbuf=newchar[1024];//pbuf存儲文件內(nèi)容// memset(pbuf,0,1024); char*pbuf=newchar[MAXSIZE];//pbuf存儲文件內(nèi)容 memset(pbuf,0,MAXSIZE);// charpbuf[1024]={0}; //UINTnBytesRead=newFile.Read(pbuf,fileLength); UINTnBytesRead=newFile.Read(pbuf,MAXSIZE); //-------------用數(shù)字1表示上傳文件名的識別碼---------//// fileName="1"+fileName; CStringpbuf1; pbuf1.Format(pbuf); fileName="1"+fileName+pbuf; //char*fName1=(LPSTR)(LPCTSTR)fileName;// strcat(fName1,pbuf);///////////////////////此語句有問題/////////////////////////////MessageBox(fileName);// MessageBox(fName1); newFile.Close(); if(nBytesRead>0) { // if(send(m_sock,fName1,strlen(fName1)+1,0)==SOCKET_ERROR)if(send(m_sock,fileName,strlen(fileName)+1,0)==SOCKET_ERROR) return; }}下載文件列表 voidCFTPClientDlg::OnDblclkFileList(NMHDR*pNMHDR,LRESULT*pResult) { //TODO:Addyourcontrolnotificationhandlercodehere intm_count=m_fileList.GetItemCount(); if(m_count<=0) { MessageBox("沒
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 繩索護欄出售合同范本
- 長沙塑膠跑道建設(shè)施工方案
- 電視節(jié)目錄制現(xiàn)場的環(huán)藝設(shè)計與視覺效果優(yōu)化
- 科技發(fā)展中科研誠信的保障措施
- 濟寧職業(yè)技術(shù)學院《古璽印臨摹》2023-2024學年第二學期期末試卷
- 武夷山潔凈實驗室施工方案
- 南昌工程學院《口譯理論與實踐》2023-2024學年第二學期期末試卷
- 西安理工大學《大規(guī)模數(shù)據(jù)挖掘與分布式處理》2023-2024學年第二學期期末試卷
- 甘肅畜牧工程職業(yè)技術(shù)學院《建筑構(gòu)造2》2023-2024學年第二學期期末試卷
- 成都信息工程大學《含能運載材料》2023-2024學年第二學期期末試卷
- 高考一輪復習《文學類文本閱讀(小說)》教案
- 空間向量求線面角
- 閱讀與思考圓錐曲線的光學性質(zhì)及其應用課件
- 試產(chǎn)到量產(chǎn)項目轉(zhuǎn)移清單
- TB編程從入門到進階
- 城市軌道交通應急處理 01 城市軌道交通應急處理概述-2
- 2023年全國中學生物理競賽預賽試題含答案版
- 葛傳椝向?qū)W習英語者講話
- 6人小品《沒有學習的人不傷心》臺詞完整版
- 教師溝通能力提升培訓幼兒園家長溝通技巧教學課件
- 喀喇沁旗樓子店鄉(xiāng)上燒鍋白石礦石灰?guī)r礦2022年度礦山地質(zhì)環(huán)境治理計劃書
評論
0/150
提交評論