处理来自 byte[] 缓冲区的消息,将剩余字节添加到下一个缓冲区

Processing messages from a byte[] buffer, prepending leftover bytes to the next buffer

我有一个 256 字节的数组 (byte[256]),我有一个字节数据流,我正在读取字节数组上的 256 缓冲区大小。

我解析字节数组并从字节数组中提取 2 "Messages"...在数组中留下 13 个字节未处理。

问题是如何获得附加到下一个 256 字节数组的 13 个字节,以便我可以以最快的方式处理来自第一个字节数组和第二个字节数组的 "partial bytes"?

示例:

    [256 Array]
    [+++++++++++++++++++] (1st Buffer)
    [**************] (Processed in the first iteration...)
                   [----] (Remaining from the 1st Buffer)
                   [----][++++++++++++++++++++](Old Buff + New Buff256[])
                   [-----+++++++++++++++++++++] <---- (THIS)
                  (How do I get this Combination to process in the most
                  efficient manner so I am not missing messages that may
                  have been chopped off by my buffer size from the old buffer)

在此先感谢大家。

声明 512 字节而不是 256 字节的缓冲区。

当您准备好接收另外 256 个字节时,请检查缓冲区中是否还有剩余。如果这样做,请将它们复制到缓冲区的开头。

然后接收你的 256 字节,把它们放在剩下的之后。

假设您的消息每条都小于 256 字节,您不应该溢出缓冲区。