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

时间:2016-05-27 02:33:38

标签: c# arrays byte buffer

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

我解析字节数组并从字节数组中提取2个“消息”...在数组中保留13个未处理的字节。

问我如何将13个字节附加到下一个256字节数组中,这样我就能以最快的方式处理第一个字节数组中的“部分字节”和第二个字节数组?

示例:

    [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)

先谢谢你们。

1 个答案:

答案 0 :(得分:2)

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

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

然后收到你的256个字节,把它们放在剩下的地方。

假设您的邮件都小于256字节,则不应该超出缓冲区。