这个应该放到这里
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都是放到一起监听的,
拿来之前画的图来说明,如下
文章来源:https://www.toymoban.com/news/detail-704878.html
之前7.live555mediaserver-第1阶段小结(完整对象图和思维导图)
https://blog.csdn.net/yhb1206/article/details/127330771也讲过这里面是服务端和客户端socket都同时监听的。文章来源地址https://www.toymoban.com/news/detail-704878.html
到了这里,关于探讨下live555用的编程设计模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!