通过HTTP发送多协议缓冲区

时间:2014-02-08 01:20:36

标签: python c++ http protocol-buffers

在我的应用程序中,我必须使用结果列表作为协议缓冲区来响应请求。该列表可能会很长,这意味着如果它们全部保存在内存中,它可能会为发送方和接收方占用大量内存。

一种选择是分页,但这需要跟踪页面。我宁愿用分块编码来流式传输它。我希望发送者能够序列化一大块数据,发送并忘记它,并且我希望接收器能够接收一些数据,对其进行反序列化并处理它,而无需任何一方拥有记忆中的一切。

我的问题是,客户端如何知道一个协议缓冲区的结束位置以及下一个协议缓冲区的开始位置?这个信息是在协议缓冲区内,还是我需要自己创建某种分隔方案?

1 个答案:

答案 0 :(得分:0)

There is no information about the size of the message inside a protocol buffer message本身。因此,您需要自己为每个块添加长度前缀。

一种常见的方法是添加使用 varint 编码编码的长度前缀。有关如何在C ++中完成此操作的详细信息,请参阅this answer