live555mediaserver——探讨下live555用的编程设计模式

这个应该放到这里
7.live555mediaserver-第1阶段小结(完整对象图和思维导图)
https://blog.csdn.net/yhb1206/article/details/127330771

但是想想,还是拿出来吧。
从这第1阶段就能发现,它实质用到了reactor网络编程模式,具体点是单Reactor服务器模型

该文章说的很不错。Reactor模式介绍https://zhuanlan.zhihu.com/p/428693405
如文中所述——“Reacor模式是一种事件驱动机制,他逆转了事件处理的流程,不再是主动地等事件就绪,而是它提前注册好的回调函数,当有对应事件发生时就调用回调函数。 由陈硕所述,Reactor即为非阻塞IO + IO复用。”,这大概可以对reactor模式有个简单认识。

“单Reactor服务器模型就是只有一个主线程运行Reactor。整个线程有一个epoll句柄,用于管理所有的套接字。服务器将listenfd的读事件注册到epoll上,当epoll_wait返回时说明listenfd可读,即有新的连接建立。此时再调用accept函数获取新连接clientfd,然后将clientfd的读写事件也注册到这个epoll上,等待clientfd发生读写事件从epoll_wait返回后,再处理clientfd的事件。”
其文章中对单Reactor服务器模型的图,截图如下
在这里插入图片描述

而live555例程live555mediaserver.cpp用的是就是这个单Reactor服务器模型,只不过不是epoll而是select,因为epoll是linux独有的,而live555mediaserver.cpp这个例程是跨平台的,所以用了select,通用点吧。其他的客户端socket和服务端监听socket都是放到一起监听的,

拿来之前画的图来说明,如下
在这里插入图片描述

之前7.live555mediaserver-第1阶段小结(完整对象图和思维导图)
https://blog.csdn.net/yhb1206/article/details/127330771也讲过这里面是服务端和客户端socket都同时监听的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值