




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第三篇網(wǎng)絡(luò)安全理論與技術(shù)實(shí)驗(yàn)篇第九章網(wǎng)絡(luò)通信編程實(shí)驗(yàn)9.3CSOCKET下基于UDP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程19.3CSOCKET下基于UDP協(xié)議的通信編程實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康模罕緦?shí)驗(yàn)要求掌握基于UDP協(xié)議的CSocket編程的基本原理和方法,并通過自己編程實(shí)現(xiàn)簡單的數(shù)據(jù)報(bào)套接字的C/S模型。網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程29.3CSOCKET下基于UDP協(xié)議的通信編程實(shí)驗(yàn)實(shí)驗(yàn)內(nèi)容:
本次實(shí)驗(yàn)要求在理解基于數(shù)據(jù)報(bào)套接字(UDP協(xié)議)的編程時序的基礎(chǔ)上,利用VS2010及以上環(huán)境下的CSocket來實(shí)現(xiàn)簡單的網(wǎng)絡(luò)通信系統(tǒng),即設(shè)計(jì)實(shí)現(xiàn)一個含有接收和發(fā)送功能的簡易聊天軟件。網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程39.3CSOCKET下基于UDP協(xié)議的通信編程實(shí)驗(yàn)實(shí)驗(yàn)要點(diǎn)說明:(實(shí)驗(yàn)難點(diǎn)說明)理解UDP協(xié)議網(wǎng)絡(luò)通信時序建立簡易聊天程序(包括客戶端和服務(wù)端功能)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程49.3CSOCKET下基于UDP協(xié)議的通信編程實(shí)驗(yàn)實(shí)驗(yàn)準(zhǔn)備:(實(shí)驗(yàn)環(huán)境,實(shí)驗(yàn)先有知識技術(shù)說明)操作系統(tǒng)windowsXP及以上VS2010以上開發(fā)環(huán)境網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程5實(shí)驗(yàn)步驟:1)理解數(shù)據(jù)報(bào)套接字編程時序基于UDP協(xié)議的網(wǎng)絡(luò)通信涉及兩個獨(dú)立的應(yīng)用程序?;跀?shù)據(jù)報(bào)套接字(UDP協(xié)議)的網(wǎng)絡(luò)通信時序如圖9-3-1所示。與圖9-1-1描述的流套接字不同,服務(wù)器和客戶端程序的數(shù)據(jù)報(bào)套接字的編程時序是完全一樣的。程序首先需要初始化SOCKET,接著綁定端口,然后進(jìn)行收發(fā)信息的操作。9.3CSOCKET下基于UDP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程6實(shí)驗(yàn)步驟:2)簡易聊天程序設(shè)計(jì)(1)新建工程打開一個VS2010,建立一個新的MFC工程。需要注意的有兩點(diǎn):首先,在應(yīng)用類型界面需要選擇基于對話框的應(yīng)用,如圖9-3-2所示;其次,在高級選項(xiàng)界面要勾選“WindowsSocket”,如圖9-3-3所示,這樣在之后的Socket編程工作中,用到相關(guān)頭文件以及鏈接庫等開發(fā)環(huán)境時就不再需要手工添加了。建立成功后,進(jìn)入ClassView,如圖9-3-4所示,可在主界面中根據(jù)功能設(shè)計(jì)好主對話框,如圖9-3-5所示。需要說明的是,該程序運(yùn)行后,用戶就會看到界面顯示的主對話框,如果關(guān)閉該對話框,程序運(yùn)行進(jìn)程就終止了。9.3CSOCKET下基于UDP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程7實(shí)驗(yàn)步驟:2)簡易聊天程序設(shè)計(jì)(2)為控件添加變量
右鍵點(diǎn)擊對話框,彈出菜單,如圖9-3-6所示。選擇ClassWizard,彈出對話框,如果添加變量,先點(diǎn)擊選擇一個控件ID,然后點(diǎn)擊右邊的“AddVariable”,輸入變量名,并且選擇變量類型,添加好變量后如圖9-3-7所示。程序代碼可以通過操作變量名來操作控件,方便編程。9.3CSOCKET下基于UDP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程8實(shí)驗(yàn)步驟:2)簡易聊天程序設(shè)計(jì)(3)編寫發(fā)送功能代碼雙擊圖9-3-5中的“發(fā)送”按鈕,產(chǎn)生一個發(fā)送的函數(shù),進(jìn)入代碼編輯頁面,添加代碼如下:voidCCChenSiCSocketDlg::OnBnClickedButton2(){ //TODO:Addyourcontrolnotificationhandlercodehere UpdateData(TRUE);//創(chuàng)建一個用來發(fā)送的socket CSocketsendsocket;//初始化 sendsocket.Create(0,SOCK_DGRAM,NULL); sendsocket.SendTo(m_sendcontent,m_sendcontent.GetLength(),m_remoteport,m_ipaddress,0);//直接發(fā)送,不需要連接 sendsocket.Close();//關(guān)閉socket}9.3CSOCKET下基于UDP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程9實(shí)驗(yàn)步驟:2)簡易聊天程序設(shè)計(jì)(4)編寫接收功能代碼為了實(shí)現(xiàn)信息的接收,程序需要接收信息的Socket,故需要申明一個Socket。因此,在ClassView中的CChenSiCSocket上點(diǎn)擊右鍵調(diào)出菜單來(如圖9-3-8),選擇Add-Class...打開添加類的窗口,選擇MFCClass,如圖9-3-9所示。在添加類向?qū)е羞M(jìn)行進(jìn)一步設(shè)置,Classname取名為CRecvSocket,Baseclass選擇CSocket,點(diǎn)擊Finish,如圖9-3-10所示。接收Socket創(chuàng)建成功后,在ClassView中找到剛才所建的新類CRecvSocket,右鍵調(diào)出菜單點(diǎn)擊ClassWizard...,進(jìn)入向?qū)Ш笳业絍irtualFunctions添加OnReceive(intnErrorCode)函數(shù),如圖9-3-11所示。9.3CSOCKET下基于UDP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程10實(shí)驗(yàn)步驟:2)簡易聊天程序設(shè)計(jì)(4)編寫接收功能代碼雙擊ClassView界面中的OnReceive(intnErrorCode)進(jìn)入代碼編輯頁面,找到“//TODO:Addyourspecializedcodehereand/orcallthebaseclass”后添加如下代碼:voidCRecvSocket::OnReceive(intnErrorCode){
//TODO:Addyourspecializedcodehereand/orcallthebaseclass charbuf[1024]; memset(buf,0,1024); ReceiveFrom(buf,1024,NULL,NULL,0); CStringc; c.Format("%s",buf); SendMessage(AfxGetMainWnd()->m_hWnd,MYMSG,0,(long)&c);//把接收到的內(nèi)容轉(zhuǎn)換類型以消息參數(shù)的形式發(fā)送到窗口 CSocket::OnReceive(nErrorCode);}9.3CSOCKET下基于UDP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程11實(shí)驗(yàn)步驟:2)簡易聊天程序設(shè)計(jì)(4)編寫接收功能代碼代碼中有發(fā)送消息函數(shù)SendMessage,參數(shù)中有MYMSG,這是個宏定義,我們在“RecvSocket.cpp”文件最頂部添加一句:#defineMYMSGWM_USER+1,作用是定義一個自定義消息號,防止和系統(tǒng)消息混淆。自定義消息發(fā)送出去后要在窗口中處理,于是還需在CCChenSiCSockDlg類中添加一個自定義消息處理函數(shù),添加方法如下:雙擊ClassView中的CCChenSiCSockDlg類名,進(jìn)入類的頭文件CChenSiCSocketDlg.h,在頭文件中添加自定義消息處理函數(shù)申明,位置如圖9-3-12所示。9.3CSOCKET下基于UDP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程12實(shí)驗(yàn)步驟:2)簡易聊天程序設(shè)計(jì)(4)編寫接收功能代碼圖9-3-12中選中的函數(shù)名MyMessageDeal可以隨意取,但是參數(shù)和前綴不能變,前綴是afx_msgLRESULT。添加了函數(shù)申明以后,還需要進(jìn)入CChenSiCSocketDlg.cpp文件,添加一個消息映射,位置如圖9-3-13所示。消息映射申明的形式如:ON_MESSAGE(消息號,自定義消息處理函數(shù))。接下來需要在CChenSiCSocketDlg.cpp文件中實(shí)現(xiàn)函數(shù)的功能代碼,參照其他函數(shù)形式,手動添加函數(shù),具體代碼如下:LRESULTCCChenSiCSocketDlg::MyMessageDeal(WPARAMwParam,LPARAMlParam){ //處理自定義消息 m_allcontent=m_allcontent+"\r\n"+*(CString*)lParam; UpdateData(FALSE); return0;}9.3CSOCKET下基于UDP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程13實(shí)驗(yàn)步驟:2)簡易聊天程序設(shè)計(jì)(4)編寫接收功能代碼到目前為止僅僅定義了派生類,還沒有用到這個派生類的對象。要使用這個派生類的對象接收到數(shù)據(jù),首先需要綁定一個端口,所以,需要雙擊綁定按鈕,添加一個綁定函數(shù),具體代碼如下:voidCCChenSiCSocketDlg::OnBnClickedButton1(){ //TODO:Addyourcontrolnotificationhandlercodehere CRecvSocket*recvsocket; UpdateData(TRUE); recvsocket=newCRecvSocket();//創(chuàng)建一個socket if(!recvsocket->Create(m_localport,SOCK_DGRAM,NULL))//初始化綁定 SetDlgItemText(IDC_STATIC,"綁定失敗"); elseSetDlgItemText(IDC_STATIC,"綁定成功");}9.3CSOCKET下基于UDP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程14實(shí)驗(yàn)步驟:2)簡易聊天程序設(shè)計(jì)(5)編譯程序編寫完成后,需要對代碼進(jìn)行編譯,可以通過菜單或者工具欄按鈕完成操作。如果使用菜單,可以選擇Build-BuildCChenSiCSocket或者Build-BuildSolution,如圖9-3-14所示。如果使用工具欄,可以選擇如圖9-3-15所示的按鈕。9.3CSOCKET下基于UDP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程15實(shí)驗(yàn)步驟:2)簡易聊天程序設(shè)計(jì)(5)編譯程序如果編譯完全成功,確保無語法錯誤時,會在Output中顯示“Build:1succeed,0failed...”,如圖9-3-16所示;如果編譯存在錯誤,會顯示在ErrorList中,如圖9-3-17所示,編譯器提示發(fā)生了很多編譯錯誤,經(jīng)查證,是因?yàn)闆]有在CChenSiCSocketDlg.cpp中引用CRecvSocket所需要的頭文件,即#include"RecvSocket.h",增加后即可編譯成功。9.3CSOCKET下基于UDP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程16實(shí)驗(yàn)步驟:3)運(yùn)行程序?qū)崿F(xiàn)簡易通信
編譯成功后,可以通過菜單或者工具欄按鈕來運(yùn)行完成的程序。在編譯成功的前提下,如果使用菜單,其中一種方法是選擇Debug-StartDebugging,如圖9-3-18所示;如果使用工具欄,可以選擇如圖9-3-19所示的按鈕。正常運(yùn)行時,會顯示MFC項(xiàng)目中所設(shè)計(jì)的主對話框,然后依據(jù)所編寫的程序進(jìn)行操作,完成需要的功能。由于本實(shí)驗(yàn)中的應(yīng)用程序同時包含服務(wù)器和客戶端程序的功能,所以需要同時運(yùn)行兩個程序,一個作為通信者Alice,一個作為通信者Bob,如圖9-3-20所示。9.3CSOCKET下基于UDP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程17實(shí)驗(yàn)步驟:3)運(yùn)行程序?qū)崿F(xiàn)簡易通信
由于該程序中既包括服務(wù)器端功能又包括客戶端功能,同時還在同一機(jī)器上運(yùn)行,所以兩個程序中對方IP可直接填“127.0.0.1”。在運(yùn)行時,首先用戶作為Alice,使用圖9-3-20中右邊的聊天程序,要選定一個能夠接收信息的本地端口進(jìn)行綁定,所以先輸入本地端口(例如:9999),點(diǎn)擊綁定;在看到綁定成功的提示后,用戶接著作為Bob,在左邊的聊天程序中左下角的編輯框里輸入想要發(fā)送的信息(例如:Hello,Alice!),并在對方端口一欄中輸入Alice所綁定的端口(例如:9999),在對方IP處輸入正確的IP(例如:127.0.0.1),點(diǎn)擊發(fā)送,即可在Alice左上角的編輯框里顯示出接收到的信息(例如:Hello,Alice!),運(yùn)行結(jié)果如圖9-3-21所示。9.3CSOCKET下基于UDP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程18實(shí)驗(yàn)步驟:3)運(yùn)行程序?qū)崿F(xiàn)簡易通信
與此同時,Alice也可以對Bob發(fā)送信息,操作方法與上面所講相同。首先用戶作為Bob,需要先綁定接收信息的本地端口(例如:6666),需要注意的是這個端口必須與Alice所綁定的端口不同;在綁定成功后,用戶接著作為Alice,在發(fā)送框里輸入信息(例如:Hello,Bob?。?,并在對方端口一欄中輸入Bob所綁定的端口(例如:6666),在對方IP處輸入正確的IP(例如:127.0.0.1),點(diǎn)擊發(fā)送,即可在Bob的接收框里顯示出接收到的信息(例如:Hello,Bob?。?,如圖9-3-22所示。需要注意的是,當(dāng)兩個聊天程序都想綁定同一個端口時,后綁定的會綁定失敗,如圖9-3-23所示。Bob發(fā)送的信息可以成功的被Alice接收,而Alice發(fā)送的
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年河北省唐山市遷西縣部分學(xué)校中考語文一模試卷
- 三農(nóng)公共服務(wù)平臺搭建手冊
- 4 田家四季歌 教學(xué)設(shè)計(jì)-2024-2025學(xué)年統(tǒng)編版語文二年級上冊
- 三農(nóng)村基層組織文化傳承與創(chuàng)新方案
- 服裝定制行業(yè)個性化定制設(shè)計(jì)與生產(chǎn)管理方案
- 海事安全管理系統(tǒng)手冊
- 2024年五年級數(shù)學(xué)上冊 八 用字母表示數(shù)第1課時 用含有字母的式子表示簡單的數(shù)量、數(shù)量關(guān)系和計(jì)算公式教學(xué)實(shí)錄 蘇教版
- 本科畢業(yè)論文完整范文(滿足查重要求)商標(biāo)惡意訴訟的認(rèn)定與法律規(guī)制
- 5 協(xié)商決定班級事務(wù) 教學(xué)設(shè)計(jì)-2023-2024學(xué)年道德與法治五年級上冊統(tǒng)編版
- 三農(nóng)宣傳資料匯編手冊
- 《安徽省數(shù)字孿生流域(工程)項(xiàng)目 初步設(shè)計(jì)報(bào)告編制大綱》
- 壓鑄車間生產(chǎn)管理制度(4篇)
- 《商務(wù)溝通-策略、方法與案例》課件 第七章 自我溝通
- 2024解析:第十二章機(jī)械效率-基礎(chǔ)練(解析版)
- 國家電網(wǎng)招聘考試試題及答案
- 2024年度5G基站建設(shè)材料采購合同3篇
- 危險(xiǎn)化學(xué)品目錄(2024版)
- Unit 2 Special Days(說課稿)2023-2024學(xué)年人教新起點(diǎn)版英語五年級下冊
- 腦室鏡手術(shù)配合
- 2024年湖南省中考數(shù)學(xué)試卷含答案
- 濃香白酒采購合同范例
評論
0/150
提交評論