zoukankan      html  css  js  c++  java
  • 重叠(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
             );

      

  • 相关阅读:
    poj3348 Cow
    poj3348 Cow
    日常。。。强行续
    日常。。。又又续
    日常。。。又又续
    日常。。。又续
    内存检索
    MyLayer MyScene
    冒泡排序
    Array数组的排序与二分查字法
  • 原文地址:https://www.cnblogs.com/xing901022/p/2723326.html
Copyright © 2011-2022 走看看