基本思想:允许应用程序使用重叠数据结构一次投递一个或者多个异步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
);
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有