网络程序设计_05_IO模型_Select模型_课件v1.0.0.pptVIP

网络程序设计_05_IO模型_Select模型_课件v1.0.0.ppt

  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文档。上传文档
查看更多
“备”则“倍” 有准备、有规划的人生更精彩! * 《信息安全管理》徐国爱—北邮出版 * 《信息安全管理》徐国爱—北邮出版 * 《信息安全管理》徐国爱—北邮出版 * 《信息安全管理》徐国爱—北邮出版 * 《信息安全管理》徐国爱—北邮出版 WinSock I/O模型-Select模型 《网络程序设计》 * 回顾 TCP 通 信 编 程 流 程 * WinSock I/O模型-Select模型 传统编程模式分析 阻塞问题的解决方法 WinSock I/O模型 Select模型 动手实践 * WinSock I/O模型-Select模型 传统编程模式分析 阻塞问题的解决方法 WinSock I/O模型 Select模型 动手实践 * 1.传统编程模式分析 特点: 编程简单,单线程,阻塞运行! 服务器要依次处理到来的客户连接和通信,处理完一个客户连接与通信之后,才能处理下一个客户的连接请求。 缺点: 服务器处理能力低下,造成许多客户端在等待连接(阻塞),可能导致客户端连接超时失败,从而无法为较多的客户端提供服务。 这种程序运行模式被称为阻塞模式。 * WinSock I/O模型-Select模型 传统编程模式分析 阻塞问题的解决方法 WinSock I/O模型 Select模型 动手实践 * 2.阻塞问题的解决方法 2.1 使用多线程编程 2.2 使用非阻塞模式 * 2.阻塞问题的解决方法 2.1 使用多线程编程 典型的处理方式是“一连接使用一线程”,即当有一个客户连接请求到来时,为该连接创建一个线程,并在该线程上处理与这个客户后续的通信会话。 但使用多线程可能带来线程膨胀的问题,即线程过多造成系统资源浪费/耗尽。 * 2.阻塞问题的解决方法 2.2 使用非阻塞模式 在阻塞模式下,函数要完全运行结束才返回。如调用recv()函数,则其会使程序进入等待状态,直到接收到数据才返回。 使用非阻塞模式,调用函数后会立即返回,但大多情况下,函数都会返回错误代码WSAEWOULDBLOCK,即请求的操作在调用期间还没有完成。为此,要对函数调用多次,直到它返回成功为止。 * 2.阻塞问题的解决方法 2.2 使用非阻塞模式 通过调用ioctlsocket()函数,可以让WinSock工作在非阻塞模式。但是通过反复调用来测试函数是否正常返回,势必影响程序性能,且编程复杂度也很大。 Windows提供了一些I/O模型,可以方便的确定套接字什么时候可读/写,即确定套接字什么时候有网络事件发生。 * WinSock I/O模型-Select模型 传统编程模式分析 阻塞问题的解决方法 WinSock I/O模型 Select模型 动手实践 * 3.WinSock I/O模型 WinSock I/O模型,目的是帮助应用程序以异步方式在一个或多个套接字上管理I/O。 WinSock I/O模型主要有6种: ① Blocking模型(阻塞模型); ② Select模型(选择模型);√ ③ WSAAsyncSelect模型(异步选择模型);√ ④ WSAEventSelect模型(事件选择模型);√ ⑤ Overlaped模型(重叠模型); ⑥ Completion Port模型(完成端口模型) * WinSock I/O模型-Select模型 传统编程模式分析 阻塞问题的解决方法 WinSock I/O模型 Select模型 动手实践 * 4.Select模型 4.1 概述 Select模型主要使用select()函数来管理I/O,故名“Select模型”。 这个模型的设计源于Unix系统,目的是避免套接字阻塞,使程序有能力管理多个套接字。 * 4.Select模型 4.2 select函数 select函数可以确定一个或多个套接字的状态。如果套接字上没有网络事件发生,则进入等待状态。函数定义如下: int select( int nfds, //忽略,仅是为了与Berkeley套接字兼容 fd_set *readfds, //指向一个套接字集合,用来检查其可读性 fd_set *writefds, //指向一个套接字集合,用来检查其可写性 fd_set *exceptfds,//指向一个套接字集合,用来检查错误 const struct timeval *timeout //指定此函数等待的最长时间,如果为NULL则为无限大 ) 返回值:①调用成功,返回发生网络事件的所有

文档评论(0)

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

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档