Linux socket编程之POLL机制处理多连接

(33) 2023-12-25 10:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说Linux socket编程之POLL机制处理多连接,希望能够帮助你!!!。

多连接的问题

使用select函数可以处理socket多连接的问题使用POLL也可以实现同样的功能,且调用方式更加简单。原型是:

Linux socket编程之POLL机制处理多连接_https://bianchenghao6.com/blog__第1张

更多C/C++学习资料,请私信我“代码”,即可获取

poll函数使用pollfd类型的结构来监控一组文件句柄,ufds是要监控的文件句柄集合,nfds是监控的文件句柄数量,timeout是等待的毫秒数,这段时间内无论I/O是否准备好,poll都会返回。timeout为负数表示无线等待,timeout为0表示调用后立即返回。执行结果:为0表示超时前没有任何事件发生;-1表示失败;成功则返回结构体中revents不为0的文件描述符个数。pollfd结构监控的事件类型如下:

Linux socket编程之POLL机制处理多连接_https://bianchenghao6.com/blog__第2张

更多C/C++学习资料,请私信我“代码”,即可获取

如上是events事件掩码的值域,POLLIN|POLLPRI类似于select的读事件,POLLOUT|POLLWRBAND类似于select的写事件。当events属性为POLLIN|POLLOUT,表示监控是否可读或可写。在poll返回时,即可通过检查revents变量对应的标志位与events是否相同,比如revents中POLLIN事件标志位被设置,则表示文件描述符可以被读取。代码段示例:

Linux socket编程之POLL机制处理多连接_https://bianchenghao6.com/blog__第3张

更多C/C++学习资料,请私信我“代码”,即可获取

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复