首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >重叠(Overlapped)IO模型

重叠(Overlapped)IO模型

作者头像
用户1154259
发布2018-01-17 14:52:12
1.8K0
发布2018-01-17 14:52:12
举报

基本思想:允许应用程序使用重叠数据结构一次投递一个或者多个异步IO请求。

提交IO请求完成后,与之关联的重叠数据结构中的事件对象受信,应用程序便可使用WSAVerlappedResult函数获取重叠操作结果。

1创建数据:

SOCKET sListen = ::WSASocket(AF_INET,SOCK_STREAM,IPPROTO_TCP,

                NULL,0,WSA_FLAG_OVERLAPPED);

2传输数据:WSASend WSARecv(tcp)     WSASendTo WSARecvFrom

  应用程序两种方法接收到重叠IO请求操作完成的通知:

    1) 与WSAOVERLAPPED结构关联的事件对象上等待,IO操作完成后,事件受信

    2) 使用lpCompetionRoutine只想完成例程

3 接受连接: AcceptEx,接受新的连接,返回本地和远程地址,取得客户程序发送的第一块数据

  如果投递的请求成功完成:则发生下面3个动作:

    1) 接受了新的连接

    2) 新连接的本地地址和远程地址都会返回

    3) 接收到了远程主机发来的第一块数据

为了直接调用AcceptEx而不是用Mswsock.lib库,需要使用WSAIcotl函数将AcceptEx函数加载到内存,记载AcceptEx函数:

GUID GuidAcceptEx = WSAID_ACCEPTEX;
DWORD dwBytes;
WSAIotcl(
         pListen->s,
         SIO_GET_EXTENSION_FUNCTION_POINTER,
         &GuidAcceptEx,
         sizeof(GuidAcceptEx),
         &pListen->lpfnAcceptEx,
         sizeof(pListen->lpfnAcceptEx),
         &dwBytes,
         NULL,
         NULL
         );
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2012-10-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档