需要用netty重新组装tcp包

Need to reassemble tcp packets with netty

目前我正在使用一个内部协议,在该协议中我向我们的硬件发送请求并使用 netty 接收答案。在我收到的消息中有几个字节告诉我答案将包含多少字节。 在我的 channelRead 方法中,我等到接收到的消息的可读字节等于或大于预期字节以确保我获得所有数据。

if (((ByteBuf) msg).readableBytes() >= dataSize) {
        //do something with the bytes
        ctx.close();
        ((ByteBuf) msg).release();
}

如果我正好从硬件收到一个 tcp 包,这就可以正常工作。有时硬件将 TCP 帧分成几个包,我的 channelRead 永远等待。

netty有没有简单的方法在channelRead方法中重组这些数据包?

只需扩展 ByteToMessageDecoder。这将为您处理所有缓冲。查看 javadoc 以获取更多详细信息和示例。