Windsock套接字I/O模型学习 --- 第一章

时间:2021-03-01 14:53:01

1. I/O模型共有以下几种:

  • 阻塞(blocking)模型
  • 选择(select)模型
  • WSAAsyncSelect模型
  • WSAEventSelect模型
  • 重叠(overlapped)模型
  • 完成端口(completion port)模型

2. 阻塞模式

套接字创建时,默认工作在阻塞模式下.阻塞套接字的好处是使用简单,但是当需要处理多个套接字连接时,就必须创建多个线程,即典型的一个连接使用一个线程的问题,这给编程带来了许多不便。所以实际开发中使用最多的还是非阻塞模式。

3. 非阻塞模式

调用 ioctlsocket 函数显式地让套接字工作在非阻塞模式下

u_long ul = 1;
SOCKET s = socket(AF_INET, SOCK_STREAM, 0);
ioctlsocket(s, FIONBIO, (u_long *)&ul);