关于谷歌的protobuf

时间:2010-08-26 03:41:14

标签: c++ protocol-buffers

我知道它可以用来从文件发送/接收结构化对象,

但是它可以用来从套接字发送/接收结构化对象的序列吗?

http://code.google.com/p/protobuf/

3 个答案:

答案 0 :(得分:6)

Protocol Buffers是一种结构化数据序列化(和反序列化)框架。它仅涉及将选择的预定义数据类型编码到数据流中。你对该流做什么取决于你。引用维基:

  

如果要编写多条消息   单个文件或流,它已启动   告诉你一个人在哪里   消息结束,下一个消息开始。该   协议缓冲区的有线格式不是   自定界,所以协议缓冲区   解析器无法确定何处   消息自行结束。最简单的   解决这个问题的方法是写   你之前每封邮件的大小   写消息本身。当你   阅读回来的消息,你读   大小,然后将字节读入a   单独的缓冲区,然后从中解析   缓冲液中。

所以是的,您可以使用它通过套接字发送/接收多个对象,但您必须做一些额外的工作来区分每个对象流。

答案 1 :(得分:1)

我不熟悉protobuf,但the documentation表示你可以使用文件描述符创建FileInputStream(然后可以用来创建CodedInputStream)。如果你在支持BSD套接字的系统上,你应该可以给它一个套接字文件描述符而不是普通的描述符。

答案 2 :(得分:0)

协议缓冲区不处理任何周围的网络/文件I / O操作。您可能需要考虑使用Thrift,其中包括带有序列化/反序列化的套接字通信库和服务器库。