读书人

从crtmpserver受看具体处理rtmp协议的

发布时间: 2012-12-26 14:39:29 作者: rapoo

从crtmpserver中看具体处理rtmp协议的流程1

服务器监听1935接口:

1.client-----发送1537个bytes数据---->server

握手第一步

tcpcarrier.cpp中的OnEvent接受到,转到tcpprotocol.cpp中的SignalInputData,在return BaseRTMPProtocol::SignalInputData(IOBuffer &buffer),最终数据在这里处理

这1537bytes数据主要是握手数据,所以在InboundRTMPProtocol中的PerformHandshake(buffer)函数处理,

首先获取消息头handshakeType(为0x03,表示未使用ssl加密的),进入PerformHandshake(buffer, false)在进行下一步的处理

a.首先验证版本和方案

bool InboundRTMPProtocol::ValidateClient(IOBuffer &inputBuffer) {if (_currentFPVersion == 0) {WARN("This version of player doesn't support validation");return true;}这里就是传说中的单独处理最末尾32bytes的if (ValidateClientScheme(inputBuffer, 0)) {_validationScheme = 0;return true;}if (ValidateClientScheme(inputBuffer, 1)) {_validationScheme = 1;return true;}FATAL("Unable to validate client");return false;}



a.填充随机数1537bytes,一共凑足3072bytes+1bytes(0x03)头

b.发送给客户端

读书人网 >互联网

热点推荐