编写模型基本与本地重叠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 ,
如果仅仅想等待事件完成