版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第三篇網(wǎng)絡(luò)安全理論與技術(shù)實(shí)驗(yàn)篇第九章網(wǎng)絡(luò)通信編程實(shí)驗(yàn)9.2CSOCKET下基于TCP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程19.2CSOCKET下基于TCP協(xié)議的通信編程實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康模罕緦?shí)驗(yàn)要求掌握基于TCP協(xié)議的CSocket編程的基本原理和方法,并通過(guò)自己編程實(shí)現(xiàn)簡(jiǎn)單的流套接字的C/S模型。網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程29.2CSOCKET下基于TCP協(xié)議的通信編程實(shí)驗(yàn)實(shí)驗(yàn)內(nèi)容:
本次實(shí)驗(yàn)要求在理解基于流套接字(TCP協(xié)議)的編程時(shí)序的基礎(chǔ)上,利用VS2010及以上環(huán)境下的CSocket來(lái)實(shí)現(xiàn)簡(jiǎn)單的網(wǎng)絡(luò)通信系統(tǒng),即設(shè)計(jì)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的選課信息系統(tǒng),其主要功能包括:實(shí)現(xiàn)簡(jiǎn)單的選課信息的發(fā)送和接收功能;客戶(hù)端輸入姓名、學(xué)號(hào)、專(zhuān)業(yè)、課程代碼、課程名,上課時(shí)間地點(diǎn),教師等信息,并發(fā)送給服務(wù)端。服務(wù)端接收后存儲(chǔ)顯示。網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程39.2CSOCKET下基于TCP協(xié)議的通信編程實(shí)驗(yàn)實(shí)驗(yàn)要點(diǎn)說(shuō)明:(實(shí)驗(yàn)難點(diǎn)說(shuō)明)理解TCP協(xié)議網(wǎng)絡(luò)通信時(shí)序分別建立服務(wù)器端和客戶(hù)端程序網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程49.2CSOCKET下基于TCP協(xié)議的通信編程實(shí)驗(yàn)實(shí)驗(yàn)準(zhǔn)備:(實(shí)驗(yàn)環(huán)境,實(shí)驗(yàn)先有知識(shí)技術(shù)說(shuō)明)操作系統(tǒng)windowsXP及以上VS2010以上開(kāi)發(fā)環(huán)境網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程5實(shí)驗(yàn)步驟:1)理解流套接字編程時(shí)序流套接字的編程時(shí)序圖請(qǐng)參看9.1節(jié)的圖9-1-1。9.2CSOCKET下基于TCP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程6實(shí)驗(yàn)步驟:2)服務(wù)器端程序編程步驟(1)新建服務(wù)器端工程打開(kāi)一個(gè)VS2010,建立一個(gè)新的MFC工程Server。需要注意的有兩點(diǎn):首先,在應(yīng)用類(lèi)型界面需要選擇基于對(duì)話(huà)框的應(yīng)用,如圖9-2-1所示;其次,在高級(jí)選項(xiàng)界面要勾選“WindowsSocket”,如圖9-2-2所示,這樣在之后的Socket編程工作中,用到相關(guān)頭文件以及鏈接庫(kù)等開(kāi)發(fā)環(huán)境時(shí)就不再需要手工添加了。建立成功后,進(jìn)入ClassView,如圖9-2-3所示,可在主界面中根據(jù)功能設(shè)計(jì)好主對(duì)話(huà)框,如圖9-2-4所示。需要說(shuō)明的是,該程序運(yùn)行后,用戶(hù)就會(huì)看到界面顯示的主對(duì)話(huà)框,如果關(guān)閉該對(duì)話(huà)框,程序運(yùn)行進(jìn)程就終止了。9.2CSOCKET下基于TCP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程7實(shí)驗(yàn)步驟:2)服務(wù)器端程序編程步驟(2)創(chuàng)建監(jiān)聽(tīng)和收發(fā)Socket由流套接字的時(shí)序圖9-1-1中可知,服務(wù)器端程序需要監(jiān)聽(tīng)Socket和收發(fā)信息的Socket,故我們需要申明2個(gè)Socket。因此,在ClassView中的CChenSiServer上點(diǎn)擊右鍵調(diào)出菜單來(lái)(如圖9-2-5),選擇Add-Class...打開(kāi)添加類(lèi)的窗口,選擇MFCClass,如圖9-2-6所示。在添加類(lèi)向?qū)е羞M(jìn)行進(jìn)一步設(shè)置,Classname取名為CListenSocket,Baseclass選擇CSocket,點(diǎn)擊Finish,如圖9-2-7所示。并且如法炮制,再建立一個(gè)CRWSocket,如圖9-2-8所示。9.2CSOCKET下基于TCP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程8實(shí)驗(yàn)步驟:2)服務(wù)器端程序編程步驟(3)實(shí)現(xiàn)監(jiān)聽(tīng)和收發(fā)功能監(jiān)聽(tīng)和收發(fā)Socket創(chuàng)建成功后,需要在主對(duì)話(huà)框中使用,以便服務(wù)器程序運(yùn)行時(shí),監(jiān)聽(tīng)和收發(fā)功能可以使用。在ClassView中雙擊CChenSiServerDlg進(jìn)入“CChenSiServerDlg.h”文件的代碼編輯頁(yè)后,加入兩行代碼:引用監(jiān)聽(tīng)Socket類(lèi)的頭文件,并為主對(duì)話(huà)框申明一個(gè)成員變量m_listen,如圖9-2-9所示。9.2CSOCKET下基于TCP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程9實(shí)驗(yàn)步驟:2)服務(wù)器端程序編程步驟(3)實(shí)現(xiàn)監(jiān)聽(tīng)和收發(fā)功能為了實(shí)現(xiàn)主對(duì)話(huà)框一運(yùn)行,監(jiān)聽(tīng)功能自動(dòng)打開(kāi),需要在ClassView中CChenSiServerDlg下雙擊OnInitDialog(),進(jìn)入相應(yīng)編輯頁(yè),找到“//TODO:Addextrainitializationhere”,在后面加入如下代碼: m_listen.Create(8888); m_listen.Listen();其中8888是監(jiān)聽(tīng)的端口號(hào),一般用戶(hù)可以修改為2000-65535之間的數(shù),表示服務(wù)器程序?qū)⒃?888端口監(jiān)聽(tīng)客戶(hù)端的請(qǐng)求。9.2CSOCKET下基于TCP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程10實(shí)驗(yàn)步驟:2)服務(wù)器端程序編程步驟(3)實(shí)現(xiàn)監(jiān)聽(tīng)和收發(fā)功能在監(jiān)聽(tīng)Socket與主對(duì)話(huà)框鏈接完成后,接下來(lái)要在監(jiān)聽(tīng)到有客戶(hù)端請(qǐng)求鏈接時(shí),實(shí)現(xiàn)進(jìn)行處理的函數(shù),因此,在ClassView中找到剛才所建的新類(lèi)CListenSocket,右鍵調(diào)出菜單點(diǎn)擊ClassWizard...,進(jìn)入向?qū)Ш笳业絍irtualFunctions添加OnAccept(intnErrorCode)函數(shù),如圖9-2-10所示。9.2CSOCKET下基于TCP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程11實(shí)驗(yàn)步驟:2)服務(wù)器端程序編程步驟(3)實(shí)現(xiàn)監(jiān)聽(tīng)和收發(fā)功能雙擊ClassView界面中的OnAccept(intnErrorCode)進(jìn)入代碼編輯頁(yè)面,找到“//TODO:Addyourspecializedcodehereand/orcallthebaseclass”后添加如下代碼:CRWSocket*dataSocket;dataSocket=newCRWSocket;Accept(*dataSocket);需要在ListenSocket.cpp中將頭文件引用,即#include"RWSocket.h"。9.2CSOCKET下基于TCP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程12實(shí)驗(yàn)步驟:2)服務(wù)器端程序編程步驟(3)實(shí)現(xiàn)監(jiān)聽(tīng)和收發(fā)功能監(jiān)聽(tīng)功能完成后,要進(jìn)行收發(fā)信息功能的實(shí)現(xiàn),按照對(duì)CListenSocket創(chuàng)建新函數(shù)的方法,選擇CRWSocket,右鍵調(diào)出菜單點(diǎn)擊ClassWizard...,進(jìn)入類(lèi)向?qū)?,添加OnReceive(intnErrorCode)函數(shù),如圖9-2-11所示。雙擊ClassView界面中的OnReceive(intnErrorCode)進(jìn)入代碼編輯頁(yè)面,找到“//TODO:Addyourspecializedcodehereand/orcallthebaseclass”后添加如下代碼:
charstr[256]; Receive(str,256); AfxMessageBox(str);9.2CSOCKET下基于TCP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程13實(shí)驗(yàn)步驟:2)服務(wù)器端程序編程步驟(4)編譯服務(wù)端程序編寫(xiě)完成后,需要對(duì)代碼進(jìn)行編譯,可以通過(guò)菜單或者工具欄按鈕完成操作。如果使用菜單,可以選擇Build-BuildCChenSierver或者Build-BuildSolution,如圖9-2-12所示。如果使用工具欄,可以選擇如圖9-2-13所示的按鈕。9.2CSOCKET下基于TCP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程14實(shí)驗(yàn)步驟:2)服務(wù)器端程序編程步驟(4)編譯服務(wù)端程序如果編譯完全成功,確保無(wú)語(yǔ)法錯(cuò)誤時(shí),會(huì)在Output中顯示“Build:1succeed,0failed...”,如圖9-2-14所示;如果編譯存在錯(cuò)誤,會(huì)顯示在ErrorList中,如圖9-2-15所示,編譯器提示發(fā)生了很多編譯錯(cuò)誤,經(jīng)查證,是因?yàn)闆](méi)有在ListenSocket.cpp中引用CRWSocket所需要的頭文件,即#include"RWSocket.h",增加后即可編譯成功。9.2CSOCKET下基于TCP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程15實(shí)驗(yàn)步驟:3)客戶(hù)端程序編程步驟(1)新建客戶(hù)端工程打開(kāi)VS2010,建立一個(gè)新的MFC工程Client,同樣應(yīng)記得勾選基于對(duì)話(huà)框選項(xiàng)和“WindowsSocket”。建立成功后,為該對(duì)話(huà)框添加按鈕、編輯控件和靜態(tài)文本框控件,如圖9-2-16所示。9.2CSOCKET下基于TCP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程16實(shí)驗(yàn)步驟:3)客戶(hù)端程序編程步驟(2)為控件添加變量右鍵點(diǎn)擊對(duì)話(huà)框,彈出菜單,如圖9-2-17所示。選擇ClassWizard,彈出對(duì)話(huà)框,如果添加變量,先點(diǎn)擊選擇一個(gè)控件ID,然后點(diǎn)擊右邊的“AddVariable”,輸入變量名,并且選擇變量類(lèi)型,添加好變量后如圖9-2-18所示。程序代碼可以通過(guò)操作變量名來(lái)操作控件,方便編程。9.2CSOCKET下基于TCP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程17實(shí)驗(yàn)步驟:3)客戶(hù)端程序編程步驟(3)實(shí)現(xiàn)發(fā)送數(shù)據(jù)功能客戶(hù)端準(zhǔn)備實(shí)現(xiàn)當(dāng)用戶(hù)點(diǎn)擊提交時(shí),連接服務(wù)器,將界面中輸入框的內(nèi)容發(fā)送到服務(wù)器端。因此雙擊“提交”按鈕,進(jìn)入該添加按鈕事件的功能程序編寫(xiě),代碼如下:voidCCChenSiClientDlg::OnBnClickedButton1(){
//TODO:Addyourcontrolnotificationhandlercodehere UpdateData(TRUE);//更新控件值,參數(shù)為FALSE時(shí),用控件值更新窗口顯示 MessageBox(m_name);//彈出消息對(duì)話(huà)框 CSocketclientSocket; clientSocket.Create(); clientSocket.Connect("127.0.0.1",8888); clientSocket.Send(m_name,256);}9.2CSOCKET下基于TCP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程18實(shí)驗(yàn)步驟:3)客戶(hù)端程序編程步驟(4)編譯客戶(hù)端程序編寫(xiě)完成后,同樣需要對(duì)代碼進(jìn)行編譯,操作方法與服務(wù)器端基本相同。把代碼在編寫(xiě)過(guò)程中發(fā)聲的各種錯(cuò)誤改正后,即可編譯成功。9.2CSOCKET下基于TCP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程19實(shí)驗(yàn)步驟:4)運(yùn)行服務(wù)端,客戶(hù)端程序?qū)崿F(xiàn)簡(jiǎn)易通信
編譯成功后,可以通過(guò)菜單或者工具欄按鈕來(lái)運(yùn)行完成的程序。在編譯成功的前提下,如果使用菜單,其中一種方法是選擇Debug-StartDebugging,如圖9-2-19所示;如果使用工具欄,可以選擇如圖9-2-20所示的按鈕。正常運(yùn)行時(shí),會(huì)顯示MFC項(xiàng)目中所設(shè)計(jì)的主對(duì)話(huà)框,然后依據(jù)所編寫(xiě)的程序進(jìn)行操作,完成需要的功能。本實(shí)驗(yàn)中需要同時(shí)運(yùn)行Server和Client兩個(gè)工程中的程序,如圖9-2-21所示。運(yùn)行時(shí),在客戶(hù)端發(fā)送框里輸入要發(fā)送的信息,點(diǎn)擊提交即可在服務(wù)器端彈出接收到的信息。運(yùn)行結(jié)果如圖9-2-22所示。9.2CSOCKET下基于TCP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程20實(shí)驗(yàn)步驟:4)運(yùn)行服務(wù)端,客戶(hù)端程序?qū)崿F(xiàn)簡(jiǎn)易通信運(yùn)行時(shí),先在服務(wù)器端輸入本機(jī)IP和將要進(jìn)行通信的本機(jī)端口,點(diǎn)擊bind綁定IP和端口;其次,在客戶(hù)端輸入服務(wù)器端的IP和通信端口,在發(fā)送框里輸入要發(fā)送的信息,點(diǎn)擊Send即可在服務(wù)器端的接收框中顯示信息;最后,在需要結(jié)束通信的時(shí)候,發(fā)送“quitTCP”即可結(jié)束通信。運(yùn)行結(jié)果如圖9-1-19所示。9.2CSOCKET下基于TCP協(xié)議的通信編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程219.2CSOCKET下基于TCP協(xié)議的通信編程實(shí)驗(yàn)實(shí)驗(yàn)結(jié)果要求
(1)建立的工程名應(yīng)該是含有個(gè)人信息,如可加入姓名全拼構(gòu)成唯一的工程名字,例如:CChenSiServer和CChenSiClient。(2)采用CSOCKET實(shí)現(xiàn)簡(jiǎn)單的客戶(hù)端與服務(wù)端的數(shù)據(jù)通信過(guò)程,完成選課信息的發(fā)送和接收,選課信息包括姓名,學(xué)號(hào),專(zhuān)業(yè),課程名,教師名,上課地點(diǎn)等。網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程229.2CSOCKET下基于TCP協(xié)議的通信編程實(shí)驗(yàn)實(shí)驗(yàn)報(bào)告要求
實(shí)驗(yàn)報(bào)告要求有封面,實(shí)驗(yàn)?zāi)康?,?shí)驗(yàn)環(huán)境,實(shí)驗(yàn)結(jié)果及分析;其中實(shí)驗(yàn)結(jié)果及分析主要描述編程步驟,關(guān)鍵功能及代碼,編程過(guò)程中遇到的問(wèn)題和經(jīng)驗(yàn)等。網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程239.2CSOCKET下基于TCP協(xié)議的通信編程實(shí)驗(yàn)實(shí)驗(yàn)擴(kuò)展要求
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 怎樣做腦急轉(zhuǎn)彎題目及答案
- 養(yǎng)老院消防安全檢查制度
- 1.1正數(shù)和負(fù)數(shù) 課后培優(yōu)檢測(cè)(含答案) 數(shù)學(xué)人教版(2024)七年級(jí)上冊(cè)
- 疑惑的考試題目及答案英文
- 農(nóng)產(chǎn)品質(zhì)量追溯制度
- 金庫(kù)庫(kù)房安全消防制度
- 酒店掛賬制度
- 數(shù)學(xué)九年級(jí)上冊(cè)題目及答案
- 物聯(lián)網(wǎng)技術(shù)標(biāo)準(zhǔn)與應(yīng)用案例研究
- 貸款轉(zhuǎn)讓制度
- 港澳聯(lián)考中文真題及答案
- 統(tǒng)編版語(yǔ)文四年級(jí)下冊(cè)全冊(cè)教案(2025年2月修訂)
- GB 11174-2025液化石油氣
- 肝素鈉工藝流程
- 熱工儀表工試題全集
- 2025-2030老年婚戀市場(chǎng)需求分析與服務(wù)平臺(tái)優(yōu)化方向
- 《JJG 875-2019數(shù)字壓力計(jì)》解讀
- 急性發(fā)熱課件
- 疼痛科醫(yī)師進(jìn)修總結(jié)匯報(bào)
- 舞蹈癥鑒別診斷課件
- 非法營(yíng)運(yùn)執(zhí)法培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論