上面这些模型区别主要是一下几个方面
如何监控socket的变化
如何通知socket的变化
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请求提供服务