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

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

阅读 5.9k
2 个回答

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题