网络软件设计课程实验(电子科技大学)多路复用-阻塞与非阻塞实验报告.docVIP

网络软件设计课程实验(电子科技大学)多路复用-阻塞与非阻塞实验报告.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
电子科技大学通信学院 《网络软件设计实验报告》 阻塞与非阻塞 班 级 学 生 学 号 教 师 阻塞与非阻塞实验 【实验目的】 体会非阻塞套接字的非阻塞效果; 体会阻塞套接字对多路复用流程的影响; 体会select中设置超时时间对系统性能的影响,(在selelct中设置超时时间实际上是进入一种既不是完全阻塞,又不是持续空转的“半阻塞”状态); 掌握阻塞套接字和非阻塞套接字不同情况下的程序设计思想。 【实验环境】 两人一组实验 【实验原理】 (包括多路复用的概念、实现方法和关键技术) 【实验方法】 调试程序的同时利用任务管理器观察在阻塞状态、非阻塞状态和“半阻塞”状态下,系统CPU利用率。 【实验步骤】 1、非阻塞套接字 1.1打开非阻塞套接字服务器工程,调试服务器。 阅读程序,不难发现服务器工作的套接字已经通过ioctlsocket()设置为非阻塞状态。 1.2单步调试服务器,观察在非阻塞套接字在没有客户机连接时,accept的返回值 ,错误代码 和类型 ; 1.3启动客户机连接服务器,继续单步调试服务器,观察服务器在客户机没有传送数据时,recv的返回值 ,错误代码 和类型 。 1.4设计非阻塞方式下的循环流程,使服务器在没有客户连接时,不断查询客户的连接(即“忙等”的流程); 请记录服务器“忙等”查询客户机连接的程序段: 1.5在连接建立后,也设计类似的循环流程,让服务器不断查询客户的数据。 请记录服务器“忙等”查询客户机送来数据的程序段: 1.6将服务器执行起来(即不再单步调试),使用windows系统任务管理器(按Ctrl+Shift+Del键),观察性能窗口的CPU使用率几十秒钟。 请记录在没有客户连接的情况下服务器的CPU使用率: 。 1.7启动客户机连接服务器,观察客户机与服务器之间是否能够正常通信: 。使用windows系统任务管理器,观察在有客户连接的情况下服务器的CPU使用率: 。 1.8将套接字设为非阻塞状态的语句注释,即设置套接字为默认的阻塞状态,重复1.6和1.7步骤,对比阻塞和非阻塞流程对系统性能的影响。 请记录请记录在没有客户连接的情况下阻塞服务器的CPU使用率: 。 请记录在有客户连接的情况下阻塞服务器的CPU使用率: 。 我们可以明显观察到虽然从程序执行功能的角度,阻塞套接字上服务器和非阻塞但“忙等”的服务器没有什么不同,但系统的性能则大不相同。 2、阻塞套接字 打开阻塞的server工程。阅读程序,我们可以发现该服务器是基于select设计的,但套接字都是阻塞状态,本实验环节就是要测试阻塞套接字对select查询机制的影响。 进一步观察服务器程序,可以看到在处理recv事件时,程序在最后又执行了一次recv。因此当服务器连接一个客户机,并接收了所有数据以后,如果客户机没有发送新的数据,服务器会因为没有接收到数据而在第二条recv指令处阻塞。 2.1单步调试阻塞的服务器程序,程序是否会在accept函数处阻塞: 。 2.2将服务器执行起来,启动一个客户机,观察该客户机能否获得服务器的服务: 。(注意,多传输几次数据试试) 2.3再启动一个客户机,观察该客户机能否获得服务器的服务: 。 请记录实验现象:(使用两个客户机多传几次数据,然后关闭客户机,观察整个过程的现象) 思考,造成以上现象的原因。 2.4对比实验:将套接字设为非阻塞状态。观察同时用多个客户机连接服务器,能否同时获得服务。实验现象与2.3是否有不同: 。 注意,本实验环节似乎是故意多执行了一次recv而造成不同的结果。不过,在一般的设计中,由于接收方无法预知对方发送数据的数量,为了将对方的数据全部接收下来,往往采用循环的方式多次接收,直到将缓冲区内当前的数据提取一空,如: while(retval 0 ){ retval = recv( … ); …… } 所以,对于阻塞套接字而言,这一段程序一定会导致阻塞,其效果和本实验环节多执行一次recv一样,只是本实验环节使程序更简化,测试目标更明确。 3、select的超时 打开正常的基于select服务器,将select超时值分别设置为0(忙等)、1.5秒、1微秒和NULL;启动服务器,并启动多个客户机连接服务器,观察系统CPU使用率。 Select超时值 CPU利用率 0 1.5秒

您可能关注的文档

文档评论(0)

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

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

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档