首页 文章

从ByteBuffer读取前四个字节,然后将它们写回来?

提问于
浏览
0

我有一个名为 msg 的ByteBuffer对象,其前四个字节中的预期消息长度如下所示:

int msgLen = msg.getInt();
    LOG.debug("Message size: " + msgLen);

如果 msgLen 小于某个阈值,我有一个部分消息,需要缓存 . 在这种情况下,我想把前四个字节放回到消息的开头;也就是说,将消息重新组合在一起,使其与预读相同 . 例如:

if (msgLen < threshold) {
    msg.rewind();
    msg.put(msgLen);

不幸的是,这似乎不是正确的方法 . 我尝试了很多翻转,放置和倒带的组合,但一定是误会 .

如何将字节按原始顺序放回写缓冲区?

1 回答

  • 0

    答案由Andremoniy在评论部分发布 . 读操作不消耗缓冲区中的字节,因此 msg.rewind() 就足够了 . 由于程序中的某些其他逻辑,这在我的情况下不起作用,并且我错误地将其与缓冲级别的问题相关联 .

相关问题