- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
电子科技大学通信学院
《网络软件设计实验报告》
多路复用服务器
班 级
学 生
学 号
教 师
多路复用服务器实验
【实验目的】
掌握基于select的多路复用程序基本流程
掌握套接字队列的管理方法
掌握基本的套接字状态处理方法
【实验环境】
两人一组实验
【实验要求】
本实验设计的服务器需要完成以下功能:收到客户机送来的数据后,打印,并返回一个确认信息,如“ack by server”,服务器不主动关闭套接字。服务能同时为多个客户机提供服务――多路复用。
本实验客户机的功能为:从键盘接收字符串后,发送给服务器,收到服务器回传的信息后打印,然后再从键盘接收新的数据,直到键盘输入“exit”,客户机关闭连接。
【实验原理】
(包括多路复用的概念、实现方法和关键技术)
【实验方法】
编写、编译、调试并测试。
【实验步骤】
根据实验步骤完成实验,并按照实验记录要求完成相应记录
1、根据课程教材和教案的相关内容写出基于select的多路复用服务器程序流程。
提示:可以将多路复用程序结构划分为三个部分:
初始化部分,包括建立监听套接字,初始化套接字队列;
select部分,包括与select相关的形成套接字状态队列,设置超时值等;
状态处理部分,逐个取出套接字队列中的套接字,根据其状态完成相应处理。
1.1打开服务器工程。可以利用以前的非多路复用服务器程序来完成改写
主套接字的初始化部分基本不用改写。
1.2设计套接字管理队列数据结构,并完成该队列的初始化、插入、删除和遍历操作。
请记录套接字管理队列的组织形式:
请记录套接字管理队列的基本操作:插入、删除和遍历操作流程:
1.3在accept之前设置主套接字为非阻塞状态
arg = 1;
ioctlsocket( s, FIONBIO,arg );
1.4建立循环查询的程序框架
while(1){
select( ……);
}
注意:select超时参数可在本实验中设置为NULL。
每次select之前都要根据套接字管理队列的内容,生成那三个状态队列(使用FD_SET),而在循环结束前需要将这三个状态队列清空(使用FD_ZERO)。
请记录遍历套接字管理队列并生成状态队列的流程:
1.5在select之后设计逐个从套接字管理队列中取出套接字,并在各状态队列中查询的程序段。(查询使用FD_ISSET)
请记录遍历套接字管理队列,并根据遍历获得的套接字在各状态队列查询的流程:
1.6进一步设计对各状态的处理。(根据实验要求)
1)主套接字上的read事件是表示有一个新的连接接入,需要使用accept来接收这个连接,并将新的连接套接字插入到套接字管理队列中,以供select选择。
请记录实现以上功能的程序段:
2)从套接字上的read事件表示从客户端收到数据,服务器可以设计为显示客户数据,并回送一个应答字符串:“ack by server”。
请记录实现以上功能的程序段:
3)服务器从套接字状态判断对方关闭连接,仍然是通过read事件后调用recv取得错误返回值来进行的。关闭后的套接字应从套接字管理队列中删除。
请记录实现以上功能的程序段:
2编译
使用rebuild all(重构全部)工具对工程进行编译。记录在编译过程中遇到的典型错误。
3调试
从程序编译通过到程序调试正常,并通过测试达到预想要求,还有一半多的路要走。因此制定一个有计划的调试步骤,非常有必要。
3.1调试程序初始化部分。方法:单步调试,
目标:得到正确的套接字标识符,并在绑定后正确地进入监听状态。
可以通过获取相关函数返回值的方法,在单步调试中观察返回值是否正确。
请记录调试结果(如能够证明程序初始化正确的变量值或流程的执行情况):
3.2调试套接字管理部分。
可以通过编写测试程序的方法,向套接字管理队列中加入一些测试套接字,再删除它们,观察套接字管理队列是否正常。
请记录调试结果(即套接字管理队列的组织及相关函数是否能够满足功能需求):
3.3调试主套接字是否能够接受连接
主套接字能够接受客户连接,这是多路复用可以正常工作的基础,只有在主套接字源源不断地接入新的连接,服务器才可能有多个套接字以供同时服务。
在accept处设置断点,启动客户机,连接服务器。
提示:连接失败的主要原因一般和端点内容有关,特别是在填写断点地址时没有正确使用htonl和htons函数,导致希望建立连接的端点和实际服务器工作的端点不一致。
请记录调试结果,并配合netstat命令证明主套接字确实在设计的端口正常工作。
3.4调试服务器能否正确处理各种状态,特别是:能否接收客户机的数据并响应;能否在客户关闭连接后,关闭套接字并从套接字
您可能关注的文档
- 通信原理精品教学(任通菊)第2章 基础知识2015.ppt
- 四肢骨折-教学课件.pdf
- 通信原理精品教学(任通菊)第3章 模拟传输.pptx
- 通信原理精品教学(任通菊)第4章 数字基带传输.pptx
- 通信原理精品教学(任通菊)第6章 模拟信号数字化与PCM.pptx
- 通信原理精品教学(任通菊)第8章 现代通信传输技术.pptx
- 通信原理精品教学(任通菊)第七章习题参考解答.pptx
- 通信原理精品教学(任通菊)第5章 基本的数字频带传输.pptx
- 通信原理精品教学(任通菊)作业解答-CH1.doc
- 通信原理精品教学(任通菊)作业解答-CH8.doc
- 网络软件设计课程实验(电子科技大学)accept与连接建立实验报告.doc
- 网络软件设计课程实验(电子科技大学)多路复用服务器实验指导书.doc
- 网络软件设计课程实验(电子科技大学)多路复用-阻塞与非阻塞实验报告.doc
- 网络软件设计课程实验(电子科技大学)多路复用-阻塞与非阻塞实验指导书.doc
- 网络软件设计课程实验(电子科技大学)基于消息驱动的windows程序设计实验报告.doc
- 网络软件设计课程实验(电子科技大学)客户服务器实验报告.doc
- 网络软件设计课程实验(电子科技大学)并发服务实验报告2.doc
- 网络软件设计课程实验(电子科技大学)基于消息驱动的windows程序设计实验指导书.doc
- 网络软件设计课程实验(电子科技大学)客户服务器实验指导书.doc
- 网络软件设计课程实验(电子科技大学)利用MFC的通信软件实验报告.doc
文档评论(0)