使用什么作为缓冲区流的分隔符

What to use as delimiter for stream of buffers

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

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

在发送端和接收端都使用 "length prefixed buffer"(参见 FlatBufferBuilder::FinishSizePrefixedGetRootSizePrefixed)。

您正在尝试对二进制缓冲区使用基于文本的定界和解析方法。那永远行不通。你需要确保你的协议完全是二进制的。