我有个问题,就是到底什么是重叠IO
SOCKET WSASocket(
  int af,
  int type,
  int protocol,
  LPWSAPROTOCOL_INFO lpProtocolInfo,
  GROUP g,
  DWORD dwFlags
);
这个函数把最后一个参数设置为WSA_FLAG_OVERLAPPED有什么影响,它到底拿来干什么的?
既然把套接字设置为非阻塞的,在响应的网络事件发生后recv和send,还有accept函数都会立即返回。
拿我还用WSASend,WSARecv,WSAAccept干什么(WSASend,WSARecv,WSAAccept也是立即返回)
能否举个例子来讲解。
还望大家不吝赐教,麻烦大家了。

解决方案 »

  1.   

    建议楼主先看一个WINDOW网络编程那本书,有电子版的,看看最重要的那几章,花不了很多时间的
      

  2.   

    recv各send依然是阻塞,
     
    //
    kissnsms:
    建议楼主先看一个WINDOW网络编程那本书,有电子版的,看看最重要的那几章,花不了很多时间的
      

  3.   

    简单说就是把网络任务交给“核心”去做。然后核心可以通过“Event Object”通知你。很多程序员是通过自己写工作线程来完成网络IO操作的,其实核心也有自己的“工作线程”(不准确,但可帮助你理解),因为不在同一线程,所以基于Overlapped的操作都是异步的。
      

  4.   

    原理就是只管post请求,io完成系统会通知你处理
      

  5.   

    Overlapped IO是Windows上一个非常有用的组件,并非单单用在网络上~
      

  6.   

    重叠即异步,IO管理器将控制传递到内核驱动之后,根据该IO包的类型决定是立即返回还是等待。如果是重叠类型,这时IO manager会立即返回IO Pending,因为设备和CPU可以并行执行所以,这就是重叠的由来。