live555 接收客户端连接及rtsp交互---网络连接处理及RTSP连接模块 .

  1. 1 套接字创建,绑定,监听  
  2. 主函数main()启动以后,会调用  
  3. (DynamicRTSPServer::createNew—> RTSPServer::setUpOurSocket setupStreamSocket)  
  4. 在setupStreamSocket中实现TCP中S端套接字的创建,绑定,监听,设置非阻塞模式操作,其监听端口是854.  
  5. 在套接字相关操作执行完成以后会执行 new DynamicRTSPServer(派生自RTSPServer),因此也会调用RTSPServer::RTSPServer并在其中中执行env.taskScheduler().turnOnBackgroundReadHandling(fServerSocket,  
  6.        (TaskScheduler::BackgroundHandlerProc*)&incomingConnectionHandler, this)  
  7. 注:其中这个env就是在main()函数中调用BasicUsageEnvironment::createNew生成的。  
  8. 第一个函数参数fServerSocket是服务器监听套接字。  
  9. 第二个参数是函数RTSPServer::incomingConnectionHandler地址指针。  
  10. 在BasicTaskScheduler::turnOnBackgroundReadHandling中会将fServerSocket存储到  
  11. HandlerSet* (HandlerSet* BasicTaskScheduler::fReadHandlers)结构中。  
  12. 同时将监听套接字 放到fReadSet中,在下面的select机制中用的到。  
  13. 将第二个参数  
  14. 对应handler->handlerProc。  
  15. 2 准备接受连接  
  16. 执行代码:env->taskScheduler().doEventLoop();  
  17. 这个env和 1中env是同一个。  
  18. 调用:BasicTaskScheduler0::doEventLoop—> BasicTaskScheduler0::doEventLoop  
  19. 在doEventLoop无限循环执行select等待客户端连接。  
  20. 执行代码:int selectResult = select(fMaxNumSockets, &readSet, NULL, NULL,  
  21.                 &tv_timeToDelay)  
  22. 其中监听套接字已经放到readset中。  
  23. 如果检测到客户端连接执行:  
  24. (*handler->handlerProc)(handler->clientData, SOCKET_READABLE);  
  25. 即RTSPServer:: incomingConnectionHandler。  
  26. 在此函数中 accept()客户端连接,创建RTSPClientSession*  
  27. 注:在RTSPClientSession其实封装了RTSP功能。  
  28. 3 接收客户端连接完成 进行RTSP交互  
  29. 通过在RTSPClientSession::RTSPClientSession执行  
  30. envir().taskScheduler().turnOnBackgroundReadHandling(fClientSocket,  
  31.      (TaskScheduler::BackgroundHandlerProc*)&incomingRequestHandler, this)  
  32. 参数1:accept()生成的客户端套接字  
  33. 参数2:客户端信息接收处理函数地址指针  
  34. 其后在singlestep函数中除了监听新客户端连接外还要等待接收已经连接客户端发送过来的信息。还是通过  
  35. (*handler->handlerProc)(handler->clientData, SOCKET_READABLE);  
  36. 调用incomingRequestHandler来完成。  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值