版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三篇网络安全理论与技术实验篇第九章网络通信编程实验9.3CSOCKET下基于UDP协议的通信编程实验网络空间安全技术实践教程19.3CSOCKET下基于UDP协议的通信编程实验实验目的:本实验要求掌握基于UDP协议的CSocket编程的基本原理和方法,并通过自己编程实现简单的数据报套接字的C/S模型。网络空间安全技术实践教程29.3CSOCKET下基于UDP协议的通信编程实验实验内容:
本次实验要求在理解基于数据报套接字(UDP协议)的编程时序的基础上,利用VS2010及以上环境下的CSocket来实现简单的网络通信系统,即设计实现一个含有接收和发送功能的简易聊天软件。网络空间安全技术实践教程39.3CSOCKET下基于UDP协议的通信编程实验实验要点说明:(实验难点说明)理解UDP协议网络通信时序建立简易聊天程序(包括客户端和服务端功能)网络空间安全技术实践教程49.3CSOCKET下基于UDP协议的通信编程实验实验准备:(实验环境,实验先有知识技术说明)操作系统windowsXP及以上VS2010以上开发环境网络空间安全技术实践教程5实验步骤:1)理解数据报套接字编程时序基于UDP协议的网络通信涉及两个独立的应用程序。基于数据报套接字(UDP协议)的网络通信时序如图9-3-1所示。与图9-1-1描述的流套接字不同,服务器和客户端程序的数据报套接字的编程时序是完全一样的。程序首先需要初始化SOCKET,接着绑定端口,然后进行收发信息的操作。9.3CSOCKET下基于UDP协议的通信编程实验网络空间安全技术实践教程6实验步骤:2)简易聊天程序设计(1)新建工程打开一个VS2010,建立一个新的MFC工程。需要注意的有两点:首先,在应用类型界面需要选择基于对话框的应用,如图9-3-2所示;其次,在高级选项界面要勾选“WindowsSocket”,如图9-3-3所示,这样在之后的Socket编程工作中,用到相关头文件以及链接库等开发环境时就不再需要手工添加了。建立成功后,进入ClassView,如图9-3-4所示,可在主界面中根据功能设计好主对话框,如图9-3-5所示。需要说明的是,该程序运行后,用户就会看到界面显示的主对话框,如果关闭该对话框,程序运行进程就终止了。9.3CSOCKET下基于UDP协议的通信编程实验网络空间安全技术实践教程7实验步骤:2)简易聊天程序设计(2)为控件添加变量
右键点击对话框,弹出菜单,如图9-3-6所示。选择ClassWizard,弹出对话框,如果添加变量,先点击选择一个控件ID,然后点击右边的“AddVariable”,输入变量名,并且选择变量类型,添加好变量后如图9-3-7所示。程序代码可以通过操作变量名来操作控件,方便编程。9.3CSOCKET下基于UDP协议的通信编程实验网络空间安全技术实践教程8实验步骤:2)简易聊天程序设计(3)编写发送功能代码双击图9-3-5中的“发送”按钮,产生一个发送的函数,进入代码编辑页面,添加代码如下:voidCCChenSiCSocketDlg::OnBnClickedButton2(){ //TODO:Addyourcontrolnotificationhandlercodehere UpdateData(TRUE);//创建一个用来发送的socket CSocketsendsocket;//初始化 sendsocket.Create(0,SOCK_DGRAM,NULL); sendsocket.SendTo(m_sendcontent,m_sendcontent.GetLength(),m_remoteport,m_ipaddress,0);//直接发送,不需要连接 sendsocket.Close();//关闭socket}9.3CSOCKET下基于UDP协议的通信编程实验网络空间安全技术实践教程9实验步骤:2)简易聊天程序设计(4)编写接收功能代码为了实现信息的接收,程序需要接收信息的Socket,故需要申明一个Socket。因此,在ClassView中的CChenSiCSocket上点击右键调出菜单来(如图9-3-8),选择Add-Class...打开添加类的窗口,选择MFCClass,如图9-3-9所示。在添加类向导中进行进一步设置,Classname取名为CRecvSocket,Baseclass选择CSocket,点击Finish,如图9-3-10所示。接收Socket创建成功后,在ClassView中找到刚才所建的新类CRecvSocket,右键调出菜单点击ClassWizard...,进入向导后找到VirtualFunctions添加OnReceive(intnErrorCode)函数,如图9-3-11所示。9.3CSOCKET下基于UDP协议的通信编程实验网络空间安全技术实践教程10实验步骤:2)简易聊天程序设计(4)编写接收功能代码双击ClassView界面中的OnReceive(intnErrorCode)进入代码编辑页面,找到“//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);//把接收到的内容转换类型以消息参数的形式发送到窗口 CSocket::OnReceive(nErrorCode);}9.3CSOCKET下基于UDP协议的通信编程实验网络空间安全技术实践教程11实验步骤:2)简易聊天程序设计(4)编写接收功能代码代码中有发送消息函数SendMessage,参数中有MYMSG,这是个宏定义,我们在“RecvSocket.cpp”文件最顶部添加一句:#defineMYMSGWM_USER+1,作用是定义一个自定义消息号,防止和系统消息混淆。自定义消息发送出去后要在窗口中处理,于是还需在CCChenSiCSockDlg类中添加一个自定义消息处理函数,添加方法如下:双击ClassView中的CCChenSiCSockDlg类名,进入类的头文件CChenSiCSocketDlg.h,在头文件中添加自定义消息处理函数申明,位置如图9-3-12所示。9.3CSOCKET下基于UDP协议的通信编程实验网络空间安全技术实践教程12实验步骤:2)简易聊天程序设计(4)编写接收功能代码图9-3-12中选中的函数名MyMessageDeal可以随意取,但是参数和前缀不能变,前缀是afx_msgLRESULT。添加了函数申明以后,还需要进入CChenSiCSocketDlg.cpp文件,添加一个消息映射,位置如图9-3-13所示。消息映射申明的形式如:ON_MESSAGE(消息号,自定义消息处理函数)。接下来需要在CChenSiCSocketDlg.cpp文件中实现函数的功能代码,参照其他函数形式,手动添加函数,具体代码如下:LRESULTCCChenSiCSocketDlg::MyMessageDeal(WPARAMwParam,LPARAMlParam){ //处理自定义消息 m_allcontent=m_allcontent+"\r\n"+*(CString*)lParam; UpdateData(FALSE); return0;}9.3CSOCKET下基于UDP协议的通信编程实验网络空间安全技术实践教程13实验步骤:2)简易聊天程序设计(4)编写接收功能代码到目前为止仅仅定义了派生类,还没有用到这个派生类的对象。要使用这个派生类的对象接收到数据,首先需要绑定一个端口,所以,需要双击绑定按钮,添加一个绑定函数,具体代码如下:voidCCChenSiCSocketDlg::OnBnClickedButton1(){ //TODO:Addyourcontrolnotificationhandlercodehere CRecvSocket*recvsocket; UpdateData(TRUE); recvsocket=newCRecvSocket();//创建一个socket if(!recvsocket->Create(m_localport,SOCK_DGRAM,NULL))//初始化绑定 SetDlgItemText(IDC_STATIC,"绑定失败"); elseSetDlgItemText(IDC_STATIC,"绑定成功");}9.3CSOCKET下基于UDP协议的通信编程实验网络空间安全技术实践教程14实验步骤:2)简易聊天程序设计(5)编译程序编写完成后,需要对代码进行编译,可以通过菜单或者工具栏按钮完成操作。如果使用菜单,可以选择Build-BuildCChenSiCSocket或者Build-BuildSolution,如图9-3-14所示。如果使用工具栏,可以选择如图9-3-15所示的按钮。9.3CSOCKET下基于UDP协议的通信编程实验网络空间安全技术实践教程15实验步骤:2)简易聊天程序设计(5)编译程序如果编译完全成功,确保无语法错误时,会在Output中显示“Build:1succeed,0failed...”,如图9-3-16所示;如果编译存在错误,会显示在ErrorList中,如图9-3-17所示,编译器提示发生了很多编译错误,经查证,是因为没有在CChenSiCSocketDlg.cpp中引用CRecvSocket所需要的头文件,即#include"RecvSocket.h",增加后即可编译成功。9.3CSOCKET下基于UDP协议的通信编程实验网络空间安全技术实践教程16实验步骤:3)运行程序实现简易通信
编译成功后,可以通过菜单或者工具栏按钮来运行完成的程序。在编译成功的前提下,如果使用菜单,其中一种方法是选择Debug-StartDebugging,如图9-3-18所示;如果使用工具栏,可以选择如图9-3-19所示的按钮。正常运行时,会显示MFC项目中所设计的主对话框,然后依据所编写的程序进行操作,完成需要的功能。由于本实验中的应用程序同时包含服务器和客户端程序的功能,所以需要同时运行两个程序,一个作为通信者Alice,一个作为通信者Bob,如图9-3-20所示。9.3CSOCKET下基于UDP协议的通信编程实验网络空间安全技术实践教程17实验步骤:3)运行程序实现简易通信
由于该程序中既包括服务器端功能又包括客户端功能,同时还在同一机器上运行,所以两个程序中对方IP可直接填“127.0.0.1”。在运行时,首先用户作为Alice,使用图9-3-20中右边的聊天程序,要选定一个能够接收信息的本地端口进行绑定,所以先输入本地端口(例如:9999),点击绑定;在看到绑定成功的提示后,用户接着作为Bob,在左边的聊天程序中左下角的编辑框里输入想要发送的信息(例如:Hello,Alice!),并在对方端口一栏中输入Alice所绑定的端口(例如:9999),在对方IP处输入正确的IP(例如:127.0.0.1),点击发送,即可在Alice左上角的编辑框里显示出接收到的信息(例如:Hello,Alice!),运行结果如图9-3-21所示。9.3CSOCKET下基于UDP协议的通信编程实验网络空间安全技术实践教程18实验步骤:3)运行程序实现简易通信
与此同时,Alice也可以对Bob发送信息,操作方法与上面所讲相同。首先用户作为Bob,需要先绑定接收信息的本地端口(例如:6666),需要注意的是这个端口必须与Alice所绑定的端口不同;在绑定成功后,用户接着作为Alice,在发送框里输入信息(例如:Hello,Bob!),并在对方端口一栏中输入Bob所绑定的端口(例如:6666),在对方IP处输入正确的IP(例如:127.0.0.1),点击发送,即可在Bob的接收框里显示出接收到的信息(例如:Hello,Bob!),如图9-3-22所示。需要注意的是,当两个聊天程序都想绑定同一个端口时,后绑定的会绑定失败,如图9-3-23所示。Bob发送的信息可以成功的被Alice接收,而Alice发送的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年酒店前厅部工作总结与计划
- 达明中学三年发展计划
- 2024年招商引资工作计划
- 岭南师范学院《英语畅谈中国文化》2021-2022学年第一学期期末试卷
- 2024政教处工作计划
- 2024年幼儿教师下学期个人工作计划范文
- 北师大版小学三年级上册语文教学计划
- 2024年秋季高二上学期班主任工作计划
- 二年级上数学教学计划二年级上语文教学计划
- 大班学期班级工作计划
- 广西机场管理集团有限责任公司招聘笔试题库2024
- Unit 2 We're Family教学设计2024年秋人教版新教材七年级英语上册
- 煤矿安全生产标准化培训题库
- DL-T-435-2018电站锅炉膛防爆规程
- 教师资格考试《高中数学专业面试》真题汇编
- 健身行业中的数据隐私和安全
- 2024年山东德州日报社招聘备案制管理人员30人重点基础提升难、易点模拟试题(共500题)附带答案详解
- 【北京同仁堂公司2021-2023年度财务报表探析(定量论文)12000字】
- 幼儿园一等奖公开课:大班绘本《爱书的孩子》课件
- 2024年春上海开放大学《危机公共关系》计分作业1-3
- 2024年辅警招聘考试试题库附答案(巩固)
评论
0/150
提交评论