Advertisement

linux网络编程学习笔记第七节:TCP select实现群聊功能(select 多路复用 FD_SET FD_CLR FD_ZERO FD_ISSET)

阅读量:

人生中最为宝贵的资产莫过于健康。(美国思想家 爱默生 R. W.)

TCP select多路复用IO复用实现群聊功能

探讨多路复用的必要性

selent多路复用接口

select 多路复用技术

配置文件描述符集合

基于select实现群聊功能的实践

核心流程

1、构建需要监听的文件描述符集合

2、检测是否存在预期的事件触发

TCP服务器示例代码 tcp_server.c

TCP客户端示例代码 tcp_client.c


在前一篇博客中,已经介绍了如何通过线程方式实现群聊功能,本文则采用另一种机制——selent复用来对多个文件描述符进行监控,点击跳转

为何需要多路复用

在实际应用过程中,通常需要同时操作多个设备文件,并在应用程序中处理多条输入输出流。如果采用阻塞模式,将无法实现预期的目标。例如,一个程序需要同时监测鼠标和键盘的操作,但无法预知事件发生的时间,而调用的API又会进入阻塞状态,从而无法实现对多个设备的同时监控。

若选择非阻塞模式,则需对多个输入进行轮询操作,但这会过度消耗CPU资源。若进一步设置多个进程分别处理每一条数据通道,则会产生新的进程间同步与通信问题,使整个程序结构变得更加复杂。

Linux系统也提供了相应的解决方案,即I/O多路复用机制。其核心理念为:

全部评论 (0)

还没有任何评论哟~