WinSock2 I/O六模型之五(重叠 I/O)

重叠 I/O和WSAEventSelect I/O模型区别:

        WSAEventSelect I/O模型是将套接字与事件对象绑定,有网络事件发生时,激发event,我们自己去处理数据。

        重叠 I/O是over结构与event绑定,然后WSARecv(函数内部套接字与over绑定),立即返回。有数据到时event激发(数据接收在暗地进行),WaitFor等待到以后,将event重置为无信号,然后WSAGetOverlappedResult()判断暗地里的数据接收是否已经完成,若这个函数第四个参数设置为False,当其返回时数据已经接收好了,我们做其他后续处理就行。不必我们像WSAEventSelect I/O模型那样等到event激发后,再去调用recv()、accept()、send()等函数处理数据。

用到的函数:

      ①WSAOVERLAPPED结构体只有hEvent参数会用到。

        (1)调用WSACreateEvent()创建事件对象hEvent1

        (2)hEvent1赋值给WSAOVERLAPPED结构体的hEvent。

        (3)调用WSARecv()或者WSASend()函数,会关联套接字与结构体。

      ② WSAGetOverlappedResult(套接字,&结构体,&已传输数据量,FALSE,&flags)

            设置FALSE,完成后就会返回。

重叠 I/O实例:

    书中P115编程模板:

        1.创建侦听套接字;

        2.接受连接;

        3.为接受连接的套接字创建WSAOVERLAPPED结构体,并赋值hEvent。

          4.借助结构体,调用WSARecv()发送异步请求;

          4.借助结构体,调用WSARecv()发送异步请求;

          5.WSAWaitForMultipleEvents()

          6. WSAGetOverlappedResult()

         7.WSAResetEvent()

           8.WSARecv()发送另一个异步请求

           9.重复5~~8的步骤




转载于:https://my.oschina.net/zengjs275/blog/523781

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值