从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(bufferfalse)在进行下一步的处理

 

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.发送给客户端

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值