我正在使用Flatbuffers实时发布对象流。我遇到的一个问题是如何在独立的对象/缓冲区之间进行分隔。如果我使用某些字符,例如'\01'
或'|'
,则不能保证这些字符不会出现在序列化缓冲区中。推荐的方法是什么?
while (more object) {
flatbuffers::Offset<Msg> m = foo::CreateMessage(...);
socket.send('|');
socket.send(fbb.GetBufferPointer(), fbb.GetSize());
socket.send('|');
}
答案 0 :(得分:1)
在发送和接收端都使用“带前缀的缓冲区”(请参见FlatBufferBuilder::FinishSizePrefixed
和GetRootSizePrefixed
)。
您试图将文本库定界和解析方法与二进制缓冲区一起使用。那永远都行不通。您需要确保您的协议完全是二进制的。