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

(网络空间安全技术实践)9.1socket下基于tcp协议的通信编程实验

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

      2、的通信编程实验,实验准备:(实验环境,实验先有知识技术说明) 操作系统windows XP及以上 VS2010 以上开发环境,网络空间安全技术实践教程,6,实验步骤: 1)理解流套接字编程时序 基于流套接字(TCP协议)的网络通信时序如图9-1-1所示。网络通信涉及到2个独立的应用程序,为了理解方便,我们建立2个不同的应用程序,一个是服务器程序(server)主要用于接收数据,如图9-1-1左边所示,服务器端程序主要完成网络监听,接收连接请求、接受信息,回送信息等;另一个是客户端程序(client),主要用于发送数据,如图9-1-1右边所示,客户端程序主要是请求连接,发送信息,接收信息。,9.1 SOCKET下基于TCP协议的通信编程实验,网络空间安全技术实践教程,7,实验步骤: 2)服务器端程序编程步骤 (1)新建服务器端工程 打开一个VS2010,建立一个新的MFC工程Server。需要注意的有两点:首先,在应用类型界面需要选择基于对话框的应用,如图9-1-2所示;其次,在高级选项界面要勾选“Windows Socket”,如图9-1-3所示,这样在之后的Socket编程工作中,用

      3、到相关头文件以及链接库等开发环境时就不再需要手工添加了。 建立成功后,进入Class View,如图9-1-4所示,可在主界面中根据功能设计好主对话框,如图9-1-5所示。需要说明的是,该程序运行后,用户就会看到界面显示的主对话框,如果关闭该对话框,程序运行进程就终止了。,9.1 SOCKET下基于TCP协议的通信编程实验,网络空间安全技术实践教程,8,实验步骤: 2)服务器端程序编程步骤 (2)为控件添加变量 右键点击对话框,弹出菜单,如图9-1-6所示。选择Class Wizard,弹出对话框,如果添加变量,先点击选择一个控件ID,然后点击右边的“Add Variable”,输入变量名,并且选择变量类型,添加好变量后如图9-1-7所示。程序代码可以通过操作变量名来操作控件,方便编程。,9.1 SOCKET下基于TCP协议的通信编程实验,网络空间安全技术实践教程,9,实验步骤: 2)服务器端程序编程步骤 (3)实现接收数据功能 由流套接字的时序图9-1-1中可知,服务器端程序需要监听和接收信息,故我们需要先绑定监听Socket端口。为了实现绑定端口的功能,我们添加一个函数SockIn

      4、it,添加方法为右键CSocketAPIDlg类名,弹出菜单,如图9-1-8所示。选择“Add Function.”,弹出对话框,输入函数名SockInit,选择返回值void,点击确定后,即可成功创建函数,如图9-1-9所示。 成功创建成员函数后,即可添加函数代码,代码如下:,9.1 SOCKET下基于TCP协议的通信编程实验,网络空间安全技术实践教程,10,void CCChenSiSocketAPIServerDlg:SockInit(void) UpdateData(TRUE); BYTE nFild4; CString str_new; CString ipstr; m_mylocalip.GetAddress(nFild0, nFild1, nFild2, nFild3); ipstr.Format(“%d.%d.%d.%d“, nFild0, nFild1, nFild2, nFild3); /得到IP地址的CString形式 /以下是初始化一些地址和端口等参数 sockaddr_in myaddr; myaddr.sin_family = AF_INET;/使用的协议簇

      5、 myaddr.sin_addr.S_un.S_addr = inet_addr(ipstr);/本机IP地址 myaddr.sin_port = htons(m_myport);/本机通信端口 SOCKET server = socket(AF_INET, SOCK_STREAM, 0);/创建一个套接字,AF_INET为协议簇,/SOCK_STREAM表示使用TCP协议,0表示缺省。 bind(server, (sockaddr*),9.1 SOCKET下基于TCP协议的通信编程实验,网络空间安全技术实践教程,11,while(1)/在死循环中一直监听端口,进入通信状态 SetDlgItemText(IDC_STATIC, “正在通信.“); SOCKET sockConn = accept(server, (sockaddr*) ,9.1 SOCKET下基于TCP协议的通信编程实验,网络空间安全技术实践教程,12,实验步骤: 2)服务器端程序编程步骤 (4)编译服务端程序 编写完成后,需要对代码进行编译,可以通过菜单或者工具栏按钮完成操作。 如果使用菜单,可以选择Build -

      6、Build CChenSiSocketAPI Server 或者Build - Build Solution,如图9-1-10所示。 如果使用工具栏,可以选择如图9-1-11所示的按钮。,9.1 SOCKET下基于TCP协议的通信编程实验,网络空间安全技术实践教程,13,实验步骤: 2)服务器端程序编程步骤 (4)编译服务端程序 如果编译完全成功,确保无语法错误时,会在Output中显示“Build: 1 succeed, 0 failed.”,如图9-1-12所示;如果编译存在错误,会显示在Error List中,如图9-1-13所示,编译器提示,在CChenSiSocketAPIServerDlg文件的第200行,发生了C2065错误,变量str_nea从没有被声明就使用了。经查证,是因为把str_new错写为str_nea,改正后即可编译成功。,9.1 SOCKET下基于TCP协议的通信编程实验,网络空间安全技术实践教程,14,实验步骤: 3)客户端程序编程步骤 (1)新建客户端工程 打开VS2010,建立一个新的MFC工程Client,同样应记得勾选基于对话框选项和“Windo

      7、ws Socket”。建立成功后,为该对话框添加按钮、编辑控件和静态文本框控件,如图9-1-14所示。,9.1 SOCKET下基于TCP协议的通信编程实验,网络空间安全技术实践教程,15,实验步骤: 3)客户端程序编程步骤 (2)为控件添加变量 按照服务器端中的设置方法为客户端对话框添加变量方法操作,添加好的变量如图如9-1-15所示。,9.1 SOCKET下基于TCP协议的通信编程实验,网络空间安全技术实践教程,16,实验步骤: 3)客户端程序编程步骤 (3)实现发送数据功能 客户端准备实现当用户点击提交时,连接服务器,将界面中输入框的内容发送到服务器端。因此双击“send”按钮,进入该添加按钮事件的功能程序编写,代码如下: void CCChenSiSocketAPIClientDlg:OnBnClickedButton2() WSADATA wsd;/用来存储版本 WSAStartup(MAKEWORD(2,2), ,9.1 SOCKET下基于TCP协议的通信编程实验,网络空间安全技术实践教程,17,/得到IP地址的CString形式 CString ipstr; m_serve

      8、rip.GetAddress(nFild0, nFild1, nFild2, nFild3); ipstr.Format(“%d.%d.%d.%d“, nFild0, nFild1, nFild2, nFild3); /以下是初始化一些地址和端口等参数 sockaddr_in serveraddr; serveraddr.sin_family = AF_INET; serveraddr.sin_addr.S_un.S_addr = inet_addr(ipstr); serveraddr.sin_port = htons(m_port); if(connect(client, (sockaddr*) ,9.1 SOCKET下基于TCP协议的通信编程实验,网络空间安全技术实践教程,18,实验步骤: 3)客户端程序编程步骤 (4)编译客户端程序 编写完成后,同样需要对代码进行编译,操作方法与服务器端基本相同。把代码在编写过程中发声的各种错误改正后,即可编译成功。,9.1 SOCKET下基于TCP协议的通信编程实验,网络空间安全技术实践教程,19,实验步骤: 4)运行服务端,客户端程序实现简

      9、易通信 编译成功后,可以通过菜单或者工具栏按钮来运行完成的程序。在编译成功的前提下,如果使用菜单,其中一种方法是选择Debug - Start Debugging,如图9-1-16所示;如果使用工具栏,可以选择如图9-1-17所示的按钮。 正常运行时,会显示MFC项目中所设计的主对话框,然后依据所编写的程序进行操作,完成需要的功能。本实验中需要同时运行Server和Client两个工程中的程序,如图9-1-18所示。,9.1 SOCKET下基于TCP协议的通信编程实验,网络空间安全技术实践教程,20,实验步骤: 4)运行服务端,客户端程序实现简易通信 运行时,先在服务器端输入本机IP和将要进行通信的本机端口,点击bind绑定IP和端口;其次,在客户端输入服务器端的IP和通信端口,在发送框里输入要发送的信息,点击Send即可在服务器端的接收框中显示信息;最后,在需要结束通信的时候,发送“quit TCP”即可结束通信。运行结果如图9-1-19所示。,9.1 SOCKET下基于TCP协议的通信编程实验,网络空间安全技术实践教程,21,9.1 SOCKET下基于TCP协议的通信编程实验,实验结果要求 (1) 本实验中所建立的工程名应该是含有个人信息,如可加入姓名全拼构成唯一的工程名字,例如:CChenSiSocketAPIServer和CChenSiSocketAPIClient。 (2) 采用SOCKET API实现基于流套接字简易聊天软件通信过程。,网络空间安全技术实践教程,22,9.1 SOCKET下基于TCP协议的通信编程实验,实验报告要求 实验报告要求有封面,实验目的,实验环境,实验结果及分析;其中实验结果及分析主要描述你编程步骤,关键功能及代码,编程过程中遇到的问题和经验等。,网络空间安全技术实践教程,23,9.1 SOCKET下基于TCP协议的通信编程实验,实验扩展要求 (1) 请在完成本节实验的基础上,在服务器端和发送端程序中添加代码,实现服务器向客户端发送信息,客户端接收信息的功能,从而实现服务器和客户端可以实现双向通信功能。 (2) 请参照本实验套接字编程,并结合数据报套接字的编程时序,利用SOCKET API实现基于UDP协议的数据报套接

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

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