因此,在过去的几周里,我一直在学习非常简单的网络编程和协议缓冲区。现在,我有一个Java客户端和一个使用协议缓冲区来回传输的C#服务器。这一切工作正常,但为了使它在客户端(Java)端工作,我必须创建具有传入消息的确切大小的字节数组,否则解析器会抛出“协议消息包含无效标记(零)“Java协议缓冲区 - 消息大小
经过一番研究,我发现我为DatagramPacket创建的数组(1024bytes)有大量的尾随零(因为我从服务器接收到的数据长度是27bytes),这就是为什么我现在,如前所述,必须创建具有确切大小的传入数据的阵列。
至于这个问题,有没有什么方法可以找到我的.proto文件中的所有“proto”消息的大小?如果没有某种静态的getSize(),有没有一种方法可以根据“消息”中的字段类型来计算?
我现在使用的信息包含3个双打,现在我正在考虑这个问题,但是我想知道发生了什么的人肯定会回答,是因为每个双8bytes,每个消息字段上每个“标签”1个字节?
您可以发送发送协议缓冲区消息之前的长度。 –