什么用作缓冲区流的定界符

时间:2019-03-29 03:03:37

标签: c++ serialization flatbuffers

我正在使用Flatbuffers实时发布对象流。我遇到的一个问题是如何在独立的对象/缓冲区之间进行分隔。如果我使用某些字符,例如'\01''|',则不能保证这些字符不会出现在序列化缓冲区中。推荐的方法是什么?

while (more object) {
    flatbuffers::Offset<Msg> m = foo::CreateMessage(...);
    socket.send('|');
    socket.send(fbb.GetBufferPointer(), fbb.GetSize());
    socket.send('|');
}

1 个答案:

答案 0 :(得分:1)

在发送和接收端都使用“带前缀的缓冲区”(请参见FlatBufferBuilder::FinishSizePrefixedGetRootSizePrefixed)。

您试图将文本库定界和解析方法与二进制缓冲区一起使用。那永远都行不通。您需要确保您的协议完全是二进制的。