博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
重叠(Overlapped)IO模型
阅读量:6293 次
发布时间:2019-06-22

本文共 945 字,大约阅读时间需要 3 分钟。

hot3.png

基本思想:允许应用程序使用重叠数据结构一次投递一个或者多个异步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         );

 

  

转载于:https://my.oschina.net/u/204616/blog/545161

你可能感兴趣的文章
大数据的发展,伴随的将是软件工程师的渐退,算法工程师的崛起
查看>>
明明是全闪存阵列,为何存储性能仍然不够快
查看>>
Cloud Foundry 登录 Azure,一键快速部署 PaaS
查看>>
Firefox 44.0将在Linux上启用H.264支持:GTK3仍缺席
查看>>
如何检测出定制服务器中预装的恶意软件?
查看>>
System x迈向更多领域 国内超算步入全面发展时代
查看>>
爱立信思科结盟背后:几家欢喜几家愁
查看>>
Linux入门时必学文件处理个命令
查看>>
模块化你的JS代码
查看>>
掌握shell应用,Linux任你行走
查看>>
【开篇】自我介绍和博客未来规划
查看>>
浪潮英特尔在德国发布KEEP升级计划 用户可提前体验英特尔KNM
查看>>
在SDN走向商用部署的路上,锐捷网络一直在不断实践
查看>>
微信做入口,微软却想做入口的入口
查看>>
你知道数据中心宕机的真正成本吗?
查看>>
「雷锋前线」那昕出任CEO,“什么值得买”会变吗
查看>>
如何构建高可用ZooKeeper集群
查看>>
NodeJS和C++之间的类型转换
查看>>
你的代码糟粕比精华要多得多
查看>>
混合云是企业IT的未来吗?
查看>>