使用protobuf反序列化对象列表

时间:2014-06-16 19:53:45

标签: python protocol-buffers protobuf-net

我正在使用套接字通信构建C#服务器和python客户端应用程序。服务器将序列化的对象列表发送到客户端,但我不知道(也找不到)如何在python中反序列化列表。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:7)

好吧,如果有人有兴趣,我找到了解决方案。诀窍是创建一个新的消息类型并添加原始消息类型重复。这是

的方式
message TransactionPackets {
    repeated TransactionPacket packet = 1;
}

message TransactionPacket {
    required int32 trans_id = 1;
    required string user_id = 2;
    required int64 date = 3;
}

现在我可以通过调用TransactionPackets.ParseFromString()来简单地反序列化对象列表

答案 1 :(得分:1)

检查一下:

"协议缓冲区有线格式不是自定界限的,因此协议缓冲区解析器无法确定消息在哪里结束。解决此问题的最简单方法是在编写消息本身之前写入每条消息的大小。当您重新读取消息时,读取​​大小,然后将字节读入单独的缓冲区,然后从该缓冲区解析。"

https://developers.google.com/protocol-buffers/docs/techniques