【发布时间】:2012-10-25 12:37:57
【问题描述】:
客户端发送一个 1481 字节的数组。 服务器可以毫无问题地读取所有 1481 字节的消息,但是通过从接收到的二进制数组中解析给定的消息,我得到了这个exeption:
com.google.protobuf.InvalidProtocolBufferException: Protocol message contained an invalid tag (zero).
二进制数据是一样的。我检查了我是否使用了正确版本的 proto 文件。我有点不知所措。任何帮助表示赞赏。
代码
byte [] data= IOUtils.toByteArray(br1, "ASCII");
System.out.println("SIZE:" + data.length);
AddressBook adb1 = AddressBook.parseFrom(data); System.out.println("Server: Addressbook:" + adb1.getPersonCount()); System.out.println("Server: Addressbook:" + adb1.getPerson(0).getName());
问题:
我需要找到一种方法,从读取的 1481 字节数组中正确解析接收到的地址簿消息。
谢谢。
【问题讨论】:
-
您的意思是 1481 字节,而不是位,对吗?当您说“二进制数据相同”时-与什么相同?很难了解这里的实际情况。
-
我的意思是byteArray的长度是1481。
-
对。了解字节和位之间的区别并使用正确的术语很重要。剩下的问题仍然很模糊。
-
接收到的二进制数据与发送的数据相同
-
问题虽然接收到的二进制数据与发送的数据相同,但我得到了这个异常:com.google.protobuf.InvalidProtocolBufferException:协议消息包含无效标签(零)。
标签: c# java stream network-programming protocol-buffers