使用什么作为缓冲区流的分隔符
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::FinishSizePrefixed
和 GetRootSizePrefixed
)。
您正在尝试对二进制缓冲区使用基于文本的定界和解析方法。那永远行不通。你需要确保你的协议完全是二进制的。
我正在使用平面缓冲区实时发布对象流。我遇到的一个问题是如何区分独立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::FinishSizePrefixed
和 GetRootSizePrefixed
)。
您正在尝试对二进制缓冲区使用基于文本的定界和解析方法。那永远行不通。你需要确保你的协议完全是二进制的。