为了账号安全,请及时绑定邮箱和手机立即绑定

从 netty 服务器读取时,不同的响应消息正在合并

从 netty 服务器读取时,不同的响应消息正在合并

慕桂英3389331 2022-10-07 19:28:53
我有一个 netty 客户端应用程序。此应用程序正在连接到端口并检索 tcp 响应。当我在负载下阅读响应时,一些响应消息正在连接。我的请求和响应消息具有唯一的事务密钥。我正在关注我的业务逻辑;实际:000010690013200000101PMAX 567F 0000000000 1554092081842400 0 000010690013200000101PMAX 567F 0000000000 1556083801080400 0预期:000010690013200000102PMAX 567F 0000000000 1554092081842400 0重复响应有 2 个响应,但服务器仅发送 1 个响应,我们在阅读时汇总了它@Overridepublic void channelRead0(ChannelHandlerContext channelHandlerContext, ByteBuf in) {    String input = in.toString(CharsetUtil.UTF_8);    log.info(input);}我该如何解决这个问题,它是在负载下发生的。Netty 版本:4.1.25.Final Java 版本:OpenJDK 64-Bit Server VM(build 25.161-b14,混合模式)谢谢。
查看完整描述

1 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

这是意料之中的,也是 TCP 的工作原理。TCP 没有消息边界的概念,因此您可能会在读取字节时收到它们(这意味着内容可能会被分段等)。

如果您需要保留某种消息边界,则需要在协议中对此信息进行编码。例如,您可以预先添加消息的长度,然后在接收对等方上使用此信息来正确解码消息。

Netty 本身包含一些解码器/编码器

LengthFieldPrepender

LengthFieldBasedFrameDecoder


查看完整回答
反对 回复 2022-10-07
  • 1 回答
  • 0 关注
  • 165 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号