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。