java - Netty中的缓冲区损坏

标签 java netty

在使用netty(带有camel)时遇到一个奇怪的错误,我们使用LengthFieldBasedFrameDecoder进行通信,客户端是第三方的socket程序,我们在服务器端使用netty(camel-netty组件)。

有时会将两条消息“合并”为一条,因此即将到来的数据全部错误。

例如:

客户端发送两条消息:

[10]啊啊啊啊啊啊啊啊 和 [10]BBBBBBBBBBBBBBBB

其中 [10] 是长度字节,AAAAAAAAAA 是数据。

但是在服务器上我们得到了 [10]AAAAAA[10]BBBBBBBBBBBBBBBBAAAAAAAAA

似乎第一条消息被第二条消息分割,因此解码器将数据解释为:

[10]AAAAAA[10]BBBBBBBB

BBBBBBBB啊啊啊啊啊啊…………………… ......

这样第一个消息长度正确,但数据错误,而第二个消息长度“BB”错误,得到一个更长的数据包。

希望我描述清楚,有人以前遇到过这个吗?

最佳答案

听起来您正在两个线程中写入同一个流。

关于java - Netty中的缓冲区损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9637486/

相关文章:

java - 运行时的通用类​​类型参数详细信息

java - 在android项目中放置并运行apk文件

Java:如何根据非字母分隔符反转字符串?

java - 如何获取网络流量统计信息?

java - ffmpeg 获取屏幕截图

java - 执行我的 java 代码时 cmd 访问被拒绝

java - 从 Netty Handler 内部访问 Netty 服务器实例

Spring Webflux 为 SSE 抛出 IOException

java - 我如何通过读取 block block 写入文件数据并写入netty中的 channel ?

java - 在 netty channel 管道中使用多个编码器