网站大量收购独家精品文档,联系QQ:2885784924

网络软件设计课程实验(电子科技大学)多路复用服务器实验报告.docVIP

网络软件设计课程实验(电子科技大学)多路复用服务器实验报告.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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调试服务器能否正确处理各种状态,特别是:能否接收客户机的数据并响应;能否在客户关闭连接后,关闭套接字并从套接字

您可能关注的文档

文档评论(0)

1243595614 + 关注
实名认证
文档贡献者

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档