五种WinSock I/O模型的特点及比较

原创 2012年03月23日 09:54:16
======  select 模型:
         
        select模型是WinSock中应用最广泛的模型之一,核心就是select函数,它可用于
    判断套接字上是否存在数据,或者能否向一个套接字写入数据。
        这个函数可以有效地防止应用程序在套接字处于阻塞模式中时,send或recv进入
    阻塞状态;同时也可以防止产生大量的WSAEWOULDBLOCK错误
         select的优势是能够从当个线程的多个套接字上进行多重连接及I/O。
    这就避免了伴随阻塞套接字和多重连接的线程剧增

======  WSAAsyncSelect 模型:

        这个是我个人最喜欢的一个模型^_^  因为它也是以消息为基础的。
        关键就是WSAAsyncSelect函数,将socket消息发送到hWnd窗口上,然后在那里
    处理相应的FD_READ,FD_WRITE等等消息
    优点:
        WSAAsyncSelect和WSAEventSelect模型提供了读写数据能力的异步通知,但他们不
    提供异步数据传送,而重叠及完成大unkou提供异步数据的传送。
        而且它可以在系统开销不大的情况下同时处理很多连接,而select模型还需要建立
    fd_set结构。
        缺点:
        必须要使用一个窗口接收消息-_-b
        如果处理成千上万的套接字就力不从心了

======  WSAEventSelect 模型
        这个也是以时间为基础的网络事件通知,但是与WSAAsyncSelect不同的是,
    它主要是由事件对象句柄完成的,而不是通过窗口。
        这个就有点复杂了,一句半句说不清...-_-b
        优点:
          不需要窗口
        缺点:
          每次只能等待64个事件,所以处理多个套接字时有必要组织一个线程池;
          所以伸缩性就不如后面的完成端口了

======  重叠模型
        这个模型可以使程序能达到更加的系统性能。基本设计原理就是让应用程序
     使用重叠的数据结构,一次投递一个或多个I/O请求。针对这些提交的请求,
     在他们完成之后,应用程序可为他们提供服务。
        它又分为两种实现方法:在事件中使用,还有就是完成例程,每样都不是很好学-_-b

======  完成端口
        这个是所有里面最为复杂的I/O模型,楼主最好是在理解了重叠I/O的基础之
    上再来学习。
        完成端口提供了最好的伸缩性,往往可以使系统达到最好的性能,是处理
    成千上万的套接字的首选。
     

winsock两种模式和五种I/O模型

第一步:搞清概念 点击打开链接
  • a_mu_lol
  • a_mu_lol
  • 2014年09月08日 18:21
  • 944

五种WinSock I/O模型的特点及比较

======    select  模型:                                    select模型是WinSock中应用最广泛的模型之一,核心就是select函数,它可...
  • Garfield
  • Garfield
  • 2005年02月22日 22:49
  • 3309

WinSock三种选择I/O模型

在《套接字socket及C/S通信的基本概念》和《WinSock编程基础》中,我们介绍了套接字的基本概念和WinSock API的基本调用规范。我们讨论了阻塞模式/非阻塞模式和同步I/O和异步I/...
  • liujiayu2
  • liujiayu2
  • 2015年06月16日 14:46
  • 819

Winsock I/O 模型详解

Winsock共有五种类型的套接字I/O模型,可让Winsock应用程序对I/O进行管理,它们包括: select(选择)、WSAAsyncSelect(异步选择)、WSAEventSelect(事件...
  • windows_nt
  • windows_nt
  • 2014年09月21日 21:31
  • 3364

简述Linux下的5种I/O模型

在说正文之前我觉得有必要解释一下同步(synchronous)IO,异步(asynchronous)IO,阻塞(blocking)IO和非阻塞(non-blocking)IO到底是什么,有什么区别:...
  • Sun_flower77
  • Sun_flower77
  • 2017年05月31日 23:25
  • 316

Winsock的异步模式的I/O模型

Winsock的异步模式的I/O模型 闲的没事看了下Winsock的异步模式的I/O模型,写些体会和感悟,记录一下。 1.Winsock同步阻塞方式的问题1 ...
  • susubuhui
  • susubuhui
  • 2012年05月10日 18:18
  • 2520

Linux中的5种I/O模型详解

转载自:http://blog.csdn.net/sinat_34990639/article/details/52778562 1 概念说明 在进行解释之前,首先要说明几个概念: 用户...
  • wwe4023
  • wwe4023
  • 2017年05月21日 18:49
  • 212

五种I/O模型的介绍与区分

有时我们在进行系统调用时为什么有的会立即返回,有的会阻塞在那里,而且系统调用的形参都不一样,其实就是因为在设计时采用了不同的I/O机制 阻塞式I/O:     一般我们使用的系统调用接口都...
  • woshizhuchuanqi
  • woshizhuchuanqi
  • 2016年03月26日 22:14
  • 247

选择模型:Select(选择)模型是Winsock中最常见的I/O模型

/******************************************************************** created: 2016/09/23 created:...
  • singebogo
  • singebogo
  • 2016年12月23日 11:35
  • 103

WinSock I/O模型比较

* WinSock I/O模型比较    select模型在各种非阻塞模型中效率最低, 因为它在检测套接字状态时需要相当大的开销, 而且随着连接数的增加呈线性增长。WSAAsyncSelect的效率居...
  • CTO_51
  • CTO_51
  • 2013年07月03日 22:01
  • 670
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:五种WinSock I/O模型的特点及比较
举报原因:
原因补充:

(最多只允许输入30个字)