答案 0 :(得分:6)
Protocol Buffers是一种结构化数据序列化(和反序列化)框架。它仅涉及将选择的预定义数据类型编码到数据流中。你对该流做什么取决于你。引用维基:
如果要编写多条消息 单个文件或流,它已启动 告诉你一个人在哪里 消息结束,下一个消息开始。该 协议缓冲区的有线格式不是 自定界,所以协议缓冲区 解析器无法确定何处 消息自行结束。最简单的 解决这个问题的方法是写 你之前每封邮件的大小 写消息本身。当你 阅读回来的消息,你读 大小,然后将字节读入a 单独的缓冲区,然后从中解析 缓冲液中。
所以是的,您可以使用它通过套接字发送/接收多个对象,但您必须做一些额外的工作来区分每个对象流。
答案 1 :(得分:1)
我不熟悉protobuf,但the documentation表示你可以使用文件描述符创建FileInputStream
(然后可以用来创建CodedInputStream
)。如果你在支持BSD套接字的系统上,你应该可以给它一个套接字文件描述符而不是普通的描述符。
答案 2 :(得分:0)
协议缓冲区不处理任何周围的网络/文件I / O操作。您可能需要考虑使用Thrift,其中包括带有序列化/反序列化的套接字通信库和服务器库。