我刚刚开始编码Netty 4,发现它似乎只支持单数分隔符,即使它声称支持多个分隔符。事实是,它支持交替使用多个分隔符,而不是同时使用。如何在Netty 4中添加头部和尾部分隔符帧解码器?
为什么我需要头部和尾部分隔符的原因是为了在发生包丢失或无序包接收情况下的速度。 例如我的框架看起来像这样:$ _ {LEN} {DATA} \ r \ n
所以我的头部分隔符是$ _,而尾部分隔符是\ r \ n。
假设在一帧中接收到多个数据包,而一些中间数据包在传输期间丢失,如果没有$ ,解码器必须继续搜索\ r \ n以确定结束。如果\ r \ n也丢失了,那么它必须搜索下一个\ r \ n而不是击中导致新消息的$ ...
但是现在的Netty DelimiterBasedFrameDecoder似乎无法支持我想上面。我应该如何实现这个目的?
它看起来对我来说Netty FrameDecoder设计没有考虑到数据包丢失或打包器无序的情况?对Netty来说,我可能是错的。如果有人能够告诉我这件事,请予以谅解。
你使用udp或tcp流吗?在udp流中,您通常不会重新分配接收到的字节 – Ferrybig
tcp streams:服务器在云端数据中心运行,客户端设备通过WiFi LAN或3G/2G SIM移动无线广域网连接。因此,网络可能不稳定,容易受到网络干扰,通常会导致数据包丢失... –
请注意,tcp可以保证您的数据是原样(因此无需修改)或连接错误。这意味着数据包的任何部分都不会丢失。 – Ferrybig