重叠(Overlapped)IO模型
2012-10-14 20:19
465 查看
基本思想:允许应用程序使用重叠数据结构一次投递一个或者多个异步IO请求。
提交IO请求完成后,与之关联的重叠数据结构中的事件对象受信,应用程序便可使用WSAVerlappedResult函数获取重叠操作结果。
1创建数据:
2传输数据:WSASend WSARecv(tcp) WSASendTo WSARecvFrom
应用程序两种方法接收到重叠IO请求操作完成的通知:
1) 与WSAOVERLAPPED结构关联的事件对象上等待,IO操作完成后,事件受信
2) 使用lpCompetionRoutine只想完成例程
3 接受连接: AcceptEx,接受新的连接,返回本地和远程地址,取得客户程序发送的第一块数据
如果投递的请求成功完成:则发生下面3个动作:
1) 接受了新的连接
2) 新连接的本地地址和远程地址都会返回
3) 接收到了远程主机发来的第一块数据
为了直接调用AcceptEx而不是用Mswsock.lib库,需要使用WSAIcotl函数将AcceptEx函数加载到内存,记载AcceptEx函数:
提交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 );
相关文章推荐
- Socket编程模型之重叠IO(Overlapped I/O)模型
- Socket I/O模型之重叠I/O(overlapped I/O)
- 重叠(Overlapped)I/O模型
- (四)Socket I/O模型之重叠I/O(overlapped I/O)
- 【网络编程】之十、重叠IO Overlapped IO
- 关于重叠IO网络编程模型的学习!
- Socket I/O模型之重叠I/O(overlapped I/O)
- 【网络编程】之十、重叠IO Overlapped IO
- 网络事件模型---重叠IO
- 【网络编程】之十、重叠IO Overlapped IO
- Winsock Overlapped IO模型(二)
- 重叠IO overlapped I/O 运用详解
- Winsock IO模型之Overlapped模型
- 【网络编程】之十一、重叠IO Overlapped IO 完成例程
- 串口通讯编程一日通2(Overlapped IO模型)
- 重叠IO模型-异步IO
- winsock IO 模型---重叠IO之事件通知 example code
- 很幽默的讲解六种Socket IO模型 Delphi版本(自己Select查看,WM_SOCKET消息通知,WSAEventSelect自动收取,Overlapped I/O 事件通知模型,Overlapped I/O 完成例程模型,IOCP模型机器人)
- 设备I/O之OVERLAPPED(IO重叠)
- 重叠IO overlapped I/O 运用详解