更多的 I/O 多路复用最近总结了一些 OS I/O 多路复用的知识。之前对 I/O Multiplexer 的认知还停留在 select 系统调用,现在是时候扩展一下视野了。 1. 从 Socket 模型开始Socket 作为一个应用层和传输层间的的抽象,支持网络层 IPv4 / IPv6,以及传输层 TCP / UDP。 双方要进行网络通信前,各自需要创建一个 Socket。 如果是基于 UDP 的套接字: 如果是基于 TCP 的套接字: 以基于 TCP 的套接字为例,首先使用 socket() 创建一个网络协议为 IPv4,以及传输协议为 TCP 的 Socket 结构体,然后使用 bind() 绑定 Server IP 和进程服务端口 port,并监听 listen() 在该端口上(listen 仅改变状态); 之所以需要指定 Server IP,是因为一台机器是可以有多个网卡的,每个网卡都有对应的 IP 地址。Socket 允许指定监听的网卡。0.0.0.0 表示监听所有的 network interfaces; port 即为传输层信息,对应指定线程的服务。 Server 端...