這個應(yīng)該放到這里
7.live555mediaserver-第1階段小結(jié)(完整對象圖和思維導(dǎo)圖)
https://blog.csdn.net/yhb1206/article/details/127330771
但是想想,還是拿出來吧。
從這第1階段就能發(fā)現(xiàn),它實質(zhì)用到了reactor網(wǎng)絡(luò)編程模式,具體點是單Reactor服務(wù)器模型。
該文章說的很不錯。Reactor模式介紹https://zhuanlan.zhihu.com/p/428693405
如文中所述——“Reacor模式是一種事件驅(qū)動機制,他逆轉(zhuǎn)了事件處理的流程,不再是主動地等事件就緒,而是它提前注冊好的回調(diào)函數(shù),當(dāng)有對應(yīng)事件發(fā)生時就調(diào)用回調(diào)函數(shù)。 由陳碩所述,Reactor即為非阻塞IO + IO復(fù)用。”,這大概可以對reactor模式有個簡單認(rèn)識。
“單Reactor服務(wù)器模型就是只有一個主線程運行Reactor。整個線程有一個epoll句柄,用于管理所有的套接字。服務(wù)器將listenfd的讀事件注冊到epoll上,當(dāng)epoll_wait返回時說明listenfd可讀,即有新的連接建立。此時再調(diào)用accept函數(shù)獲取新連接clientfd,然后將clientfd的讀寫事件也注冊到這個epoll上,等待clientfd發(fā)生讀寫事件從epoll_wait返回后,再處理clientfd的事件?!?br> 其文章中對單Reactor服務(wù)器模型的圖,截圖如下
而live555例程live555mediaserver.cpp用的是就是這個單Reactor服務(wù)器模型,只不過不是epoll而是select,因為epoll是linux獨有的,而live555mediaserver.cpp這個例程是跨平臺的,所以用了select,通用點吧。其他的客戶端socket和服務(wù)端監(jiān)聽socket都是放到一起監(jiān)聽的,
拿來之前畫的圖來說明,如下文章來源:http://www.zghlxwxcb.cn/news/detail-704878.html
之前7.live555mediaserver-第1階段小結(jié)(完整對象圖和思維導(dǎo)圖)
https://blog.csdn.net/yhb1206/article/details/127330771也講過這里面是服務(wù)端和客戶端socket都同時監(jiān)聽的。文章來源地址http://www.zghlxwxcb.cn/news/detail-704878.html
到了這里,關(guān)于探討下live555用的編程設(shè)計模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!