电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

(网络空间安全技术实践)9.3csocket下基于udp协议的通信编程实验

24页
  • 卖家[上传人]:繁星
  • 文档编号:88146742
  • 上传时间:2019-04-20
  • 文档格式:PPT
  • 文档大小:1.49MB
  • / 24 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、网络空间安全技术实践教程,吕秋云,王小军,胡耿然,汪云路,王秋华 西安电子科技大学出版社,第三篇 网络安全理论与技术实验篇,第九章 网络通信编程实验 9.3 CSOCKET下基于UDP协议的通信编程实验,网络空间安全技术实践教程,2,9.3 CSOCKET下基于UDP协议的通信编程实验,实验目的: 本实验要求掌握基于UDP协议的CSocket编程的基本原理和方法,并通过自己编程实现简单的数据报套接字的C/S模型。,网络空间安全技术实践教程,3,9.3 CSOCKET下基于UDP协议的通信编程实验,实验内容: 本次实验要求在理解基于数据报套接字(UDP协议)的编程时序的基础上,利用VS2010及以上环境下的CSocket来实现简单的网络通信系统,即设计实现一个含有接收和发送功能的简易聊天软件。,网络空间安全技术实践教程,4,9.3 CSOCKET下基于UDP协议的通信编程实验,实验要点说明:(实验难点说明) 理解UDP协议网络通信时序 建立简易聊天程序(包括客户端和服务端功能),网络空间安全技术实践教程,5,9.3 CSOCKET下基于UDP协议的通信编程实验,实验准备:(实验环境,实验

      2、先有知识技术说明) 操作系统windows XP及以上 VS2010 以上开发环境,网络空间安全技术实践教程,6,实验步骤: 1)理解数据报套接字编程时序 基于UDP协议的网络通信涉及两个独立的应用程序。基于数据报套接字(UDP协议)的网络通信时序如图9-3-1所示。与图9-1-1描述的流套接字不同,服务器和客户端程序的数据报套接字的编程时序是完全一样的。程序首先需要初始化SOCKET,接着绑定端口,然后进行收发信息的操作。,9.3 CSOCKET下基于UDP协议的通信编程实验,网络空间安全技术实践教程,7,实验步骤: 2)简易聊天程序设计 (1)新建工程 打开一个VS2010,建立一个新的MFC工程。需要注意的有两点:首先,在应用类型界面需要选择基于对话框的应用,如图9-3-2所示;其次,在高级选项界面要勾选“Windows Socket”,如图9-3-3所示,这样在之后的Socket编程工作中,用到相关头文件以及链接库等开发环境时就不再需要手工添加了。 建立成功后,进入Class View,如图9-3-4所示,可在主界面中根据功能设计好主对话框,如图9-3-5所示。需要说明的是,该

      3、程序运行后,用户就会看到界面显示的主对话框,如果关闭该对话框,程序运行进程就终止了。,9.3 CSOCKET下基于UDP协议的通信编程实验,网络空间安全技术实践教程,8,实验步骤: 2)简易聊天程序设计 (2)为控件添加变量 右键点击对话框,弹出菜单,如图9-3-6所示。选择Class Wizard,弹出对话框,如果添加变量,先点击选择一个控件ID,然后点击右边的“Add Variable”,输入变量名,并且选择变量类型,添加好变量后如图9-3-7所示。程序代码可以通过操作变量名来操作控件,方便编程。,9.3 CSOCKET下基于UDP协议的通信编程实验,网络空间安全技术实践教程,9,实验步骤: 2)简易聊天程序设计 (3)编写发送功能代码 双击图9-3-5中的“发送”按钮,产生一个发送的函数,进入代码编辑页面,添加代码如下: void CCChenSiCSocketDlg:OnBnClickedButton2() / TODO: Add your control notification handler code here UpdateData(TRUE);/创建一个用来发送的soc

      4、ket CSocket sendsocket;/初始化 sendsocket.Create(0, SOCK_DGRAM, NULL); sendsocket.SendTo(m_sendcontent, m_sendcontent.GetLength(), m_remoteport, m_ipaddress, 0); /直接发送,不需要连接 sendsocket.Close();/关闭socket ,9.3 CSOCKET下基于UDP协议的通信编程实验,网络空间安全技术实践教程,10,实验步骤: 2)简易聊天程序设计 (4)编写接收功能代码 为了实现信息的接收,程序需要接收信息的Socket,故需要申明一个Socket。因此,在Class View中的CChenSiCSocket上点击右键调出菜单来(如图9-3-8),选择Add - Class.打开添加类的窗口,选择MFC Class,如图9-3-9所示。 在添加类向导中进行进一步设置,Class name取名为CRecvSocket,Base class选择CSocket,点击Finish,如图9-3-10所示。 接收Socket创建

      5、成功后,在ClassView中找到刚才所建的新类CRecvSocket,右键调出菜单点击Class Wizard.,进入向导后找到Virtual Functions添加OnReceive(int nErrorCode)函数,如图9-3-11所示。,9.3 CSOCKET下基于UDP协议的通信编程实验,网络空间安全技术实践教程,11,实验步骤: 2)简易聊天程序设计 (4)编写接收功能代码 双击Class View界面中的OnReceive(int nErrorCode)进入代码编辑页面,找到“/ TODO: Add your specialized code here and/or call the base class”后添加如下代码: void CRecvSocket:OnReceive(int nErrorCode) / TODO: Add your specialized code here and/or call the base class char buf1024; memset(buf, 0, 1024); ReceiveFrom(buf, 1024, NULL, NU

      6、LL, 0); CString c; c.Format(“%s“, buf); SendMessage(AfxGetMainWnd()-m_hWnd, MYMSG, 0, (long) ,9.3 CSOCKET下基于UDP协议的通信编程实验,网络空间安全技术实践教程,12,实验步骤: 2)简易聊天程序设计 (4)编写接收功能代码 代码中有发送消息函数SendMessage,参数中有MYMSG,这是个宏定义,我们在“RecvSocket.cpp”文件最顶部添加一句:#define MYMSG WM_USER+1,作用是定义一个自定义消息号,防止和系统消息混淆。 自定义消息发送出去后要在窗口中处理,于是还需在CCChenSiCSockDlg类中添加一个自定义消息处理函数,添加方法如下: 双击Class View中的CCChenSiCSockDlg类名,进入类的头文件CChenSiCSocketDlg.h,在头文件中添加自定义消息处理函数申明,位置如图9-3-12所示。,9.3 CSOCKET下基于UDP协议的通信编程实验,网络空间安全技术实践教程,13,实验步骤: 2)简易聊天程序设计 (

      7、4)编写接收功能代码 图9-3-12中选中的函数名MyMessageDeal可以随意取,但是参数和前缀不能变,前缀是afx_msg LRESULT。添加了函数申明以后,还需要进入CChenSiCSocketDlg.cpp文件,添加一个消息映射,位置如图9-3-13所示。消息映射申明的形式如:ON_MESSAGE(消息号,自定义消息处理函数)。 接下来需要在CChenSiCSocketDlg.cpp文件中实现函数的功能代码,参照其他函数形式,手动添加函数,具体代码如下: LRESULT CCChenSiCSocketDlg:MyMessageDeal(WPARAM wParam, LPARAM lParam) /处理自定义消息 m_allcontent = m_allcontent + “rn“ + *(CString *)lParam; UpdateData(FALSE); return 0; ,9.3 CSOCKET下基于UDP协议的通信编程实验,网络空间安全技术实践教程,14,实验步骤: 2)简易聊天程序设计 (4)编写接收功能代码 到目前为止仅仅定义了派生类,还没有用到这个派生类

      8、的对象。要使用这个派生类的对象接收到数据,首先需要绑定一个端口,所以,需要双击绑定按钮,添加一个绑定函数,具体代码如下: void CCChenSiCSocketDlg:OnBnClickedButton1() / TODO: Add your control notification handler code here CRecvSocket *recvsocket; UpdateData(TRUE); recvsocket = new CRecvSocket();/创建一个socket if(!recvsocket-Create(m_localport, SOCK_DGRAM, NULL)/初始化绑定 SetDlgItemText(IDC_STATIC, “绑定失败“); else SetDlgItemText(IDC_STATIC, “绑定成功“); ,9.3 CSOCKET下基于UDP协议的通信编程实验,网络空间安全技术实践教程,15,实验步骤: 2)简易聊天程序设计 (5)编译程序 编写完成后,需要对代码进行编译,可以通过菜单或者工具栏按钮完成操作。 如果使用菜单,可以选择B

      9、uild - Build CChenSiCSocket 或者Build - Build Solution,如图9-3-14所示。 如果使用工具栏,可以选择如图9-3-15所示的按钮。,9.3 CSOCKET下基于UDP协议的通信编程实验,网络空间安全技术实践教程,16,实验步骤: 2)简易聊天程序设计 (5)编译程序 如果编译完全成功,确保无语法错误时,会在Output中显示“Build: 1 succeed, 0 failed.”,如图9-3-16所示;如果编译存在错误,会显示在Error List中,如图9-3-17所示,编译器提示发生了很多编译错误,经查证,是因为没有在CChenSiCSocketDlg.cpp中引用CRecvSocket所需要的头文件,即#include “RecvSocket.h“,增加后即可编译成功。,9.3 CSOCKET下基于UDP协议的通信编程实验,网络空间安全技术实践教程,17,实验步骤: 3)运行程序实现简易通信 编译成功后,可以通过菜单或者工具栏按钮来运行完成的程序。在编译成功的前提下,如果使用菜单,其中一种方法是选择Debug - Start Debugging,如图9-3-18所示;如果使用工具栏,可以选择如图9-3-19所示的按钮。 正常运行时,会显示MFC项目中所设计的主对话框,然后依据所编写的程序进行操作,完成需要的功能。由于本实验中的应用程序同时包含服务器和客户端程序的功能,所以需要同时运行两个程序,一个作为通信者Alice,一个作为通信者Bob,如图9-3-20所示。,9.3 CSOCKET下基于UDP协议的通信编程实验,网络空间安全技术实践教程,18,实验步骤: 3)运行程序实现简易通信 由于该程序中既包括服务器端功能又包括客户端功能,同时还在同一机器上运行,所以两个程序中对方IP可直接填“127.0.0.1”。 在运行时,首先用户作为Alice,使用图9-3-20中右边的聊天程序,要选定一个能够接收信息的本地端口进行绑定,所以先输入本地端口(例如:9999),点击绑定;在看到绑定成功的提示后,用户接着作为Bob,在左边的聊天程序中左下角的编辑框里输入想要发送的信息(例如:Hello,Alice!),并在对方端口一栏中输入Alice所绑定的

      《(网络空间安全技术实践)9.3csocket下基于udp协议的通信编程实验》由会员繁星分享,可在线阅读,更多相关《(网络空间安全技术实践)9.3csocket下基于udp协议的通信编程实验》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.