windows提供了一些I/O 模型帮助应用程序以同步或者异步方式在一个或者多个套接字上管理I/O。大体上,这样的I/O 模型共有6 种。
- 阻塞(blocking)模型
- 选择(select)模型
- WSAAsyncSelect模型
- WSAEventSelect 模型
- 重叠(overlapped)模型
- 完成端口(completion port)模型
1.阻塞(blocking)模型
在阻塞模式下,执行I/O 的Winsock 调用(如send 和recv)一直到操作完成才返回。在非阻塞模式下,Winsock 函数会立即返回。阻塞套接字的好处是使用简单,但是当需要处理多个套接字连接时,就必须创建多个线程,即典型的一个连接使用一个线程的问题,这给编程带来了许多不便。所以实际开发中使用最多的还是下面要讲述的非阻塞模式。
2.选择(select)模型