这几种网络模型哪三种比较常用,谢谢

zhangyonghui2117 2015-06-27 02:17:12
如题:
1.select :
应用场合:主要面向的是某些使用U n i x操作系统的计算机,它们采用的是B e r k e l e y套接字方案。s e l e c t模型已集成到Winsock 1.1中,它
使那些想避免在套接字调用过程中被无辜“锁定”的应用程序,采取一种有序的方式,同时进行对多个套接字的管理.
原理: 利用select函数,我们判断套接字上是否存在数据,或者能否向一个套接字写入数据.


2.WSAAsyncSelect :
应用场合:用于帮助应用程序开发者面向一些早期的16位Windows平台(如WindowsforWorkgroups),适应其“落后”的多任务消息环
境。应用程序仍可从这种模型中得到好处,特别是它们用一个标准的Windows例程(常称为“winproc”),对窗口消息进行
管理的时候。该模型亦得到了MicrosoftFoundationClass微软基本类,MFC)对象CSocket的采纳,

原理:利用WSAAsyncSelect来处理FD_READ、FD_WRITE、FD_ACCEPT、FD_CONNECT、FD_CLOSE消息
3 WSAEventSelect:
应用场合: 各种异步Socket 程序. WSAWaitForMultipleEvents 限制最多只能等待64个Event .
原理: 将socket的各种变化通过Event来通知 区别WSAAsyncSelect 窗口消息来通知

4.OverlappedI/O:
应用场合: 与WSAEventSelect模式类似
原理: 将socket的各种变化通过Event来通知 并多了一个绑定的event处理过程.

5.Completionport:
应用场合: 完成端口”模型是迄今为止最为复杂的一种I / O模型。然而,假若一个应用程序同时需要管理为数众多的套接字,那么采用这种模
型,往往可以达到最佳的系统性能!但不幸的是,该模型只适用于Windows NT和Windows 2000操作系统。因其设计的复杂性,
只有在你的应用程序需要同时管理数百乃至上千个套接字的时候,而且希望随着系统内安装的C P U数量的增多,应用程序的性
能也可以线性提升,才应考虑采用“完成端口”模型
原理: 完成端口模型要求我们创建一个Wi n 3 2完成端口对象,通过指定数量的线程,对重叠I / O请求进行管理,以便为已经完成的重
叠I / O请求提供服务
...全文
421 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
羽飞 2015-06-30
  • 打赏
  • 举报
回复
Windows用IOCP,Linux epoll 其它的默认poll
qq120848369 2015-06-29
  • 打赏
  • 举报
回复
客户端select足够了,服务端需要IOCP。
翅膀又硬了 2015-06-29
  • 打赏
  • 举报
回复
只用过1、5
bravery36 2015-06-27
  • 打赏
  • 举报
回复
服务器用得最多的是epoll,现实情况是你不容易找到windows的服务器。

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧