I/O复用:poll
I/O复用:一个进程或者一个线程能够同时对多个文件描述符(socket)提供服务
首先我们需要了解poll的函数原型
poll函数原型:
int poll(struct pollfd *fds, in length, int timeout);
struct pollfd *fds:是一个指针,传递数组
int nfds:数组长度,用户关注的文件描述符的个数
int length:超时时间
-1 出错//永久阻塞
0 超时
>0 就绪文件描述符个数
poll与select简单对比:
poll支持的事件类型(红色为常用):
I/O复用使用poll下TCP服务器的实现(客户端与TCP的相同):
一个客户端与服务器连接如图(连接成功):
多个客户端与服务器连接如图(连接成功):