比如每4个数据包冗余1个包,但是上层要发送的数据不足4个包,这时应该怎么处理?是减少冗余度立即发送,还是等数据量够了再发送?我看了一些KCP+FEC库的实现,都是等数据够了再发送,但是如果上层没有新的数据要发,岂不是要一直等待
填充啊。比如要求必须满64byte才够一个封包,那就在后面填充0,然后发送。
另外数据报文往往是有时效性的,不可能数据量不够你就等几分钟甚至半小时,那程序就完蛋了。一般都会设计成“数据量+超时”控制。
比如一个报文只有10个字节,协议层可以先不发,等着;然后过了100ms又来个报文20字节,还是太少,协议层可以仍然不发;再等100ms又来了10字节……如果继续等,第一个报文已经延迟200ms了,这对很多应用来说已经完全无法接受了,用户体验太差。
那么这时候往往要加一个超时时间,比如20ms,过了超时时间就立即发送前面的10字节。这样既能减少冗余,又不至于恶化操作体验。
联系客服