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)
还没有任何评论哟~
