1. 程式人生 > >EasyDarwin流媒體伺服器啟動函式StartServer程式碼分析

EasyDarwin流媒體伺服器啟動函式StartServer程式碼分析

在前面部落格中分析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。