EasyDarwin流媒體伺服器啟動函式StartServer程式碼分析
阿新 • • 發佈:2018-12-09
在前面部落格中分析EasyDarwin字典類QTSS_Dictionary時瞭解到相關QTSS_DictionaryMap,QTSSAttrInfoDict等屬性內容,其初始化分配記憶體是在伺服器啟動的時候。
正好回過來分析伺服器的初始化啟動函式QTSS_ServerState StartServer(...)相關程式碼。
StartServer主要完成如下幾點
- 初始化工具類
- 初始化網路模型
- 解析配置檔案
- 設定執行緒並開始監聽
- 啟動socket世界佇列
- 初始化所有模組
- 啟動伺服器執行緒
如圖所示
其中在伺服器初始化函式QTSServer::Initialize(....)內呼叫CreateListeners函式為伺服器建立了4個TCP監聽Socket,分別為2個RTSPListenerSocket和2個HTTPListenerSocket,為何都有2監聽Socket個對於一種協議,因為其中一個是繫結在本地地址另一個繫結在網路地址。RTSPListenerSocket和HTTPListenerSocket繫結的埠都是從配置檔案easydarwin.xml中讀取,預設RTSPListenerSocket採用的是554,HTTPListenerSocket採用的是8080。