套接字socket重叠io

本文详细介绍了Windows下套接字Socket如何实现重叠IO,包括WSASocket的创建、WSARecv和WSASend的使用,以及WSAWaitForMultipleEvents和WSAGetOverlappedResult在等待和获取结果中的应用。强调重叠IO并非非阻塞IO,并解释了OVERLAPPED结构和WSABUF参数的作用。还提到了APC函数在操作完成后自动调用的功能,以及保持线程Alertable状态的重要性。
摘要由CSDN通过智能技术生成

编写模型基本与本地重叠io一致 . 本地OVERLAPPED

另:重叠io 并非是 非阻塞io,两者是不同的概念

重叠io是让操作系统帮忙在后台运行, win上的OVERLAPPED , linux上的 aio 系列函数,他们告诉你何时完成

非阻塞io是自己判断何时操作完成(例如WSAEWOULDBLOCK , EAGAIN), 比如EPOLL的ET模式: epoll select的限制 条件触发 边缘触发

 

函数调用:

1.WSASocket 可创建一个具有重叠io的套接字 ; 与*nix兼容的 socket 函数默认情况就是具有重叠io;

2.WSARecv / WSASend . 都具有一个overlapped的参数位置 与 一个WSABUF参数;

   这两个函数类似于readv/writev . 一次可读写多个多个缓冲区; 

   OVERLAPPED 结构是用户与内核的一块共享区域. 用于传递值/结果.

   WSABUF 参数可用于传递一个数组,一次读写多个缓冲区;

 

3. WSAWaitForMultipleEvents  用于等待操作完成, 前提是如果OVERLAPPED结构中含有Event对象;

4.WSAGetOverlappedResult    同上.  2个等待函数的区别是如果你像获取接受/发送多少字节那么就用WSAGetOverlappedResult ,

                                                  如果仅仅想等待事件完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值