在前面博客中分析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。