netty接收的报文太长导致分包怎么办?

1,客户端是C++,向netty发送字符串,字符串的长度不固定
2,字符串长这样:不是http请求是字符串
image.png
3,我目前想到的解决办法是用DelimiterBasedFrameDecoder分割符,用发给我报文的最后一个“}”去分割,这样:
image.png
4,目前的问题是客户端报文的长度是不固定的,我怕我在DelimiterBasedFrameDecoder中定义的1024*1024不够用会导致分包
5,说明:为什么没有用http,因为第三方公司没有公网ip,需要它和我建立连接,我们要在这个连接上通信
6,有没有给好的解决办法呢?

阅读 6.2k
2 个回答

纯TCP发包?协议里定义好数据长度再读就好
或者直接用http(最合适的方法),自己设计协议除非经验丰富否则太容易翻车

在header定义好总长度就好了,netty的ReplayingDecoder就是处理这种问题的。
如果总长度100,只读到90包就读完了,它会等待下个包,再读10。

推荐问题