需要用netty重新组装tcp包

时间:2015-05-12 14:51:13

标签: java sockets tcp netty

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

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

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

netty中有一种简单的方法可以在channelRead方法中重新组合这些数据包吗?

1 个答案:

答案 0 :(得分:1)

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