live555 接收客户端连接及rtsp交互---网络连接处理及RTSP连接模块 .
2012-05-14 17:10
423 查看
[cpp]
view plaincopyprint?
1 套接字创建,绑定,监听
主函数main()启动以后,会调用
(DynamicRTSPServer::createNew—> RTSPServer::setUpOurSocket setupStreamSocket)
在setupStreamSocket中实现TCP中S端套接字的创建,绑定,监听,设置非阻塞模式操作,其监听端口是854.
在套接字相关操作执行完成以后会执行 new DynamicRTSPServer(派生自RTSPServer),因此也会调用RTSPServer::RTSPServer并在其中中执行env.taskScheduler().turnOnBackgroundReadHandling(fServerSocket,
(TaskScheduler::BackgroundHandlerProc*)&incomingConnectionHandler, this)
注:其中这个env就是在main()函数中调用BasicUsageEnvironment::createNew生成的。
第一个函数参数fServerSocket是服务器监听套接字。
第二个参数是函数RTSPServer::incomingConnectionHandler地址指针。
在BasicTaskScheduler::turnOnBackgroundReadHandling中会将fServerSocket存储到
HandlerSet* (HandlerSet* BasicTaskScheduler::fReadHandlers)结构中。
同时将监听套接字 放到fReadSet中,在下面的select机制中用的到。
将第二个参数
对应handler->handlerProc。
2 准备接受连接
执行代码:env->taskScheduler().doEventLoop();
这个env和 1中env是同一个。
调用:BasicTaskScheduler0::doEventLoop—> BasicTaskScheduler0::doEventLoop
在doEventLoop无限循环执行select等待客户端连接。
执行代码:int selectResult = select(fMaxNumSockets, &readSet, NULL, NULL,
&tv_timeToDelay)
其中监听套接字已经放到readset中。
如果检测到客户端连接执行:
(*handler->handlerProc)(handler->clientData, SOCKET_READABLE);
即RTSPServer:: incomingConnectionHandler。
在此函数中 accept()客户端连接,创建RTSPClientSession*
注:在RTSPClientSession其实封装了RTSP功能。
3 接收客户端连接完成 进行RTSP交互
通过在RTSPClientSession::RTSPClientSession执行
envir().taskScheduler().turnOnBackgroundReadHandling(fClientSocket,
(TaskScheduler::BackgroundHandlerProc*)&incomingRequestHandler, this)
参数1:accept()生成的客户端套接字
参数2:客户端信息接收处理函数地址指针
其后在singlestep函数中除了监听新客户端连接外还要等待接收已经连接客户端发送过来的信息。还是通过
(*handler->handlerProc)(handler->clientData, SOCKET_READABLE);
调用incomingRequestHandler来完成。
view plaincopyprint?
1 套接字创建,绑定,监听
主函数main()启动以后,会调用
(DynamicRTSPServer::createNew—> RTSPServer::setUpOurSocket setupStreamSocket)
在setupStreamSocket中实现TCP中S端套接字的创建,绑定,监听,设置非阻塞模式操作,其监听端口是854.
在套接字相关操作执行完成以后会执行 new DynamicRTSPServer(派生自RTSPServer),因此也会调用RTSPServer::RTSPServer并在其中中执行env.taskScheduler().turnOnBackgroundReadHandling(fServerSocket,
(TaskScheduler::BackgroundHandlerProc*)&incomingConnectionHandler, this)
注:其中这个env就是在main()函数中调用BasicUsageEnvironment::createNew生成的。
第一个函数参数fServerSocket是服务器监听套接字。
第二个参数是函数RTSPServer::incomingConnectionHandler地址指针。
在BasicTaskScheduler::turnOnBackgroundReadHandling中会将fServerSocket存储到
HandlerSet* (HandlerSet* BasicTaskScheduler::fReadHandlers)结构中。
同时将监听套接字 放到fReadSet中,在下面的select机制中用的到。
将第二个参数
对应handler->handlerProc。
2 准备接受连接
执行代码:env->taskScheduler().doEventLoop();
这个env和 1中env是同一个。
调用:BasicTaskScheduler0::doEventLoop—> BasicTaskScheduler0::doEventLoop
在doEventLoop无限循环执行select等待客户端连接。
执行代码:int selectResult = select(fMaxNumSockets, &readSet, NULL, NULL,
&tv_timeToDelay)
其中监听套接字已经放到readset中。
如果检测到客户端连接执行:
(*handler->handlerProc)(handler->clientData, SOCKET_READABLE);
即RTSPServer:: incomingConnectionHandler。
在此函数中 accept()客户端连接,创建RTSPClientSession*
注:在RTSPClientSession其实封装了RTSP功能。
3 接收客户端连接完成 进行RTSP交互
通过在RTSPClientSession::RTSPClientSession执行
envir().taskScheduler().turnOnBackgroundReadHandling(fClientSocket,
(TaskScheduler::BackgroundHandlerProc*)&incomingRequestHandler, this)
参数1:accept()生成的客户端套接字
参数2:客户端信息接收处理函数地址指针
其后在singlestep函数中除了监听新客户端连接外还要等待接收已经连接客户端发送过来的信息。还是通过
(*handler->handlerProc)(handler->clientData, SOCKET_READABLE);
调用incomingRequestHandler来完成。
相关文章推荐
- live555 接收客户端连接及rtsp交互---网络连接处理及RTSP连接模块
- live555 接收客户端连接及rtsp交互---网络连接处理及RTSP连接模块
- java在线聊天项目0.7版 连接多个客户端问题,开启多个客户端后服务器端只接收到一个 对各种异常的补充处理
- live555学习之RTSP连接建立以及请求消息处理过程
- Android仿人人客户端(v5.7.1)——网络模块处理的架构
- 基于live555的rtsp客户端接收及ffmpeg解码
- 基于live555的rtsp 客户端模块优化
- live555学习之RTSP连接建立以及请求消息处理过程
- 网络模块(客户端的连接动作)
- live555_RTSP连接建立以及请求消息处理过程
- android RTSP连接服务器和从服务器接收数据的处理流程
- WCF 套接字连接已中止。这可能是由于处理消息时出错或远程主机超过接收超时或者潜在的网络资源问题导致的
- 客户端不能连接网络的处理经过(MxrSmb/RDR错误,WorkStaion服务无法启动)
- 套接字连接已中止。这可能是由于处理消息时出错或远程主机超过接收超时或者潜在的网络资源有关问题导致的。本地套接字超时是“00:04:59.9990000”
- Live555学习之(四)------建立RTSP连接的过程(RTSP客户端)
- WCF 套接字连接已中止。这可能是由于处理消息时出错或远程主机超过接收超时或者潜在的网络资源问题导致的
- WCF 套接字连接已中止。这可能是由于处理消息时出错或远程主机超过接收超时或者潜在的网络资源问题导致的
- 基于live555的rtsp客户端接收及ffmpeg解码
- 基于live555的rtsp客户端模块
- live555中rtsp客户端对于buffer的处理方法介绍