[c#]实现fms服务器,rtmp协议破解(4),小结一下
[attachimg]1398[/attachimg]
已经成功实现rtmp协议的解包,压包,连接和服务端的connect函数和accept函数也实现了,虽然这不是件容易的事情,但是很有趣。
总结一下,之前一直困惑我的数据包交错问题,也就是说频道在这儿的作用。
rtmp协议是一个实时性要求非常高的协议,所以数据包的发送,接受和处理都不能耗时太长,否则会产生停滞,所以包最大的大小为128k,通过不同的channel,可以同时发送音频,视频,函数调用等各种数据和指令。
在处理环节上,我们不再能够使用单线程的处理方式,程序必须内建线程池,类似iocp的实现,呵呵。只要有完整包的到达,他就被分发到线程池中,然后通过不断的线程切换,来处理不同用户,不同channel的包,并进行解码发送。发送时是按照一个单位包(128k)同步,这样就能高效的处理信息,并且产生交错式数据。
已经成功实现rtmp协议的解包,压包,连接和服务端的connect函数和accept函数也实现了,虽然这不是件容易的事情,但是很有趣。
总结一下,之前一直困惑我的数据包交错问题,也就是说频道在这儿的作用。
rtmp协议是一个实时性要求非常高的协议,所以数据包的发送,接受和处理都不能耗时太长,否则会产生停滞,所以包最大的大小为128k,通过不同的channel,可以同时发送音频,视频,函数调用等各种数据和指令。
在处理环节上,我们不再能够使用单线程的处理方式,程序必须内建线程池,类似iocp的实现,呵呵。只要有完整包的到达,他就被分发到线程池中,然后通过不断的线程切换,来处理不同用户,不同channel的包,并进行解码发送。发送时是按照一个单位包(128k)同步,这样就能高效的处理信息,并且产生交错式数据。