今天给大家来分享下IO多路复用中的poll函数实现的并发服务器
我们知道,实现并发服务器的方法有多种,有多进程、多线程、IO多路复用,IO多路复用中有select并发服务器,poll并发服务器,epoll并发服务器等,今天来尝试下使用poll实现并发。
poll函数原型
#include <poll.h>
int poll(struct pollfd *fds, nfds_t nfds, int timeout);
参数:
fds:关心的文件描述符数组(结构体数组)
struct pollfd {
int fd; /* file descriptor */
short events; /* requested events */
short revents; /* returned events */
};
nfds:数组中的文件描述符个数
timeout:设置超时时间
可以分为几个步骤
初始化服务器(创建套接字、绑定、监听)
定义一个结构体数组
将感兴趣的文件描述符加入到结构体数组中,并设置好自己感兴趣的事件
while(1)死循环里面用for循环检测,如果有感兴趣的事件发生,再判断是否是sockfd套接字,如果是的话接受客户端的连接,得到连接套接字connfd用于通信,将其加入到结构体数组中,下次循环进行检测,如果监测到感兴趣的事件发生,