【问题标题】:Need to reassemble tcp packets with netty需要用netty重新组装tcp数据包
【发布时间】:2015-07-23 12:53:16
【问题描述】:

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

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

如果我从硬件接收到一个 tcp 包,这会很好。有时硬件将 TCP 帧拆分为几个包,而我的 channelRead 永远等待。

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

【问题讨论】:

  • 如果readableBytes()小于dataSize怎么办?

标签: java sockets tcp netty


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-01-27
    • 2016-11-28
    • 2012-10-19
    • 2015-05-27
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    相关资源
    最近更新 更多