【发布时间】:2013-09-01 10:12:10
【问题描述】:
所以,在过去的几周里,我一直在学习非常简单的网络编程和协议缓冲区。现在,我有一个 Java 客户端和一个 C# 服务器,它们使用协议缓冲区来回通信。一切正常,但要使其在客户端(Java)端工作,我必须创建具有传入消息的确切大小的字节数组,否则解析器会抛出“协议消息包含无效标签(零)"
在做了一些研究之后,我发现我为我的 DatagramPacket 创建的数组(1024 字节)有大量尾随零(因为我从服务器传入的数据是 27 字节长),这就是我现在的原因,因为前面提到过,必须创建具有传入数据的确切大小的数组。
至于问题,有没有办法找出我的 .proto 文件中所有原型“消息”的大小?如果没有某种静态 getSize(),有没有一种方法可以仅通过“消息”中的字段类型来计算?
我现在正在使用的消息包含 3 个双精度,现在我正在考虑它,但我想从知道发生了什么的人那里得到肯定的答案,是 27,因为每个双精度 8 字节和 1 字节每个消息字段上的每个“标签”?
【问题讨论】:
-
您可以在发送协议缓冲区消息之前发送长度。
标签: java protocol-buffers