重叠(Overlapped)IO模型

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏逸鹏说道

Python3 与 C# 并发编程之~ 线程篇2

其实以前的 Linux中是没有线程这个概念的, Windows程序员经常使用线程,这一看~方便啊,然后可能是当时程序员偷懒了,就把进程模块改了改(这就是为什么之...

21040
来自专栏测试驿栈

Jmeter(三十一)_dummy sampler模拟数据驱动

之前写过一篇数据驱动的文章 数据驱动测试 ,但是内容过于简单,有些关键的地方没有写明白。这两天参照了一下官方文档,重新整理了一篇数据驱动测试!

40340
来自专栏python3

python3-socket黏包现象

黏包原因(怎么形成的)---->只有TCP协议有黏包现象,UDP协议永远不会黏包

13710
来自专栏大学生计算机视觉学习DeepLearning

VS下如何建立一个新的MFC程序 网络编程 课设 基于C++ MFC 连接数据库 小应用 小项目浅析展示

46130
来自专栏崔庆才的专栏

正则表达式中零宽断言的用法

了解了正则表达式,想必一般情况下的匹配都不会出现什么问题,但是如果一些特殊情况,可能需要用到一些更高级的正则表达式匹配操作,本节我们来说明一下正则表达式的一个较...

29840
来自专栏大内老A

[CORS:跨域资源共享] 同源策略与JSONP

Web API普遍采用面向资源的REST架构,将浏览器最终执行上下文的JavaScript应用Web API消费者的重要组成部分。“同源策略”限制了JavaSc...

22090
来自专栏Seebug漏洞平台

34c3 部分Web Writeup

34c3应该算是2017年年末的最后一个惊喜了,比赛题目虽然有非预期导致难度降了很多,但是从CTF中能学到什么才是最重要的,其中Web有3个XSS题目,思路非常...

467100
来自专栏CaiRui

Python Flask-web表单

Flask-WTF扩展可以把处理web表单的过程变成一种愉悦的体验。 ? 一、跨站请求伪造保护 默认情况下,Flask-WTF能够保护所有表单免受跨站请求伪造的...

39890
来自专栏cmazxiaoma的架构师之路

JavaWeb学习(1) 使用Session和Token防止表单重复提交

22430
来自专栏微信公众号:Java团长

Intellij IDEA神器那些让人爱不释手的小技巧

之前写了一篇介绍IntellIJ IDEA的文章,主要是列出一些平时大家可能没用过或者没怎么用,但是又非常好用的IntellIJ IDEA小技巧。由于篇幅原因,...

9120

扫码关注云+社区

领取腾讯云代金券