有点晕了,大家解答下 谢谢

解决方案 »

  1.   

    这是两个不同的概念,一个从等待“网络事件”的角度,一个是从异步I/O的角度。重叠的 I/O
    Winsock 1 中创建使用套接字 API,一个重叠的套接字,并使用 Win32 文件 I/O API ReadFile,ReadFileEx、 WriteFile、 WriteFileEx 套接字句柄上执行重叠的 I/O。在 Winsock 2 中,您将创建一个重叠的套接字 WSASocket 使用 WSA_FLAG_OVERLAPPED 标志,或只需使用套接字 API。您可以使用上面的 Win32 文件 I/O api 或 Winsock 2 WSASend、 WSASendTo、 WSARecv 和 WSARecvFrom 启动重叠的 I/O 操作。如果您使用该 SO_RCVBUF 和 SO_SNDBUF 选项设置为零 TCP 堆栈接收和发送缓冲区,您基本上指示 TCP 堆栈直接执行 I/O 使用您的 I/O 调用中提供的缓冲区。因此,除了重叠的套接字 I/O 的非阻止优点,其他优点是更好的性能由于保存缓冲区副本 TCP 堆栈缓冲区和用户缓冲区对每个 I/O 调用之间。但是,您必须确保一旦它的提交的重叠操作和重叠的操作完成之前,您不访问用户缓冲区。阻塞和非阻止模式
    在创建套接字时默认情况下它是阻塞套接字。在阻止模式套接字 I/O 操作,连接并接受所有阻塞,直到完成该操作相关的操作。从阻塞模式套接字操作模式更改为非阻止模式,您可以使用 WSAAsyncSelect、 WSAEventSelect,或 FIONBIO 命令 ioctlsocket API 调用中。参考,很详细了:
    http://support.microsoft.com/kb/181611/zh-cn