live555源代码研究——RTSP服务器端建立及监听

    live555必须先建立RTSP服务端,用于监听客户端的请求。live555是如何建立RTSP服务端的?

    1 首先要创建一个DynamicRTSPServer,实际上就是创建一个Server Socket,用于监听客户端的请求。同时在服务端socket注册客户端连接事件处理函数,当客户端请求连接RTSP服务时,事件处理函数对客户端连接进行处理。下面是源代码:

// Create the RTSP server.  Try first with the default port number (554),
// and then with the alternative port number (8554):

  RTSPServer* rtspServer;
  portNumBits rtspServerPortNum = 554;								
  //创建一个DynamicRTSPServer,创建服务端Socket,
  //通过跟踪代码,DynamicRTSPServer中调用了, socket sock = socket(AF_INET, type, 0); 其中type为SOCK_DGRAM,显然是基于TCP的				
  rtspServer = DynamicRTSPServer::createNew(*env, rtspServerPortNum, authDB);
  if (rtspServer == NULL) {
    rtspServerPortNum = 8554;
    rtspServer = DynamicRTSPServer::createNew(*env, rtspServerPortNum, authDB);
  }
  if (rtspServer == NULL) {
    *env << "Failed to create RTSP server: " << env->getResultMsg() << "\n";
    exit(1);
  }

  ……
  //对请求连接的客户端事件进行处理
  env->taskScheduler().doEventLoop(); // does not return

  return 0; // only to prevent compiler warning

2 下面是在RTSPServer的构造函数中注册客户端连接处理函数:

//注册客户端连接处理函数incomingConnectionHandlerRTSP
env.taskScheduler().turnOnBackgroundReadHandling(fRTSPServerSocket,(TaskScheduler::BackgroundHandlerProc*)&incomingConnectionHandlerRTSP, this);

3 在evn->taskScheduler().doEventLoop()中,服务端会监听客户端的连接请求,并对客户端的读事件、

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值