解析protobuf时InvalidProtocolBufferException -无效标签(零)



我有一个protobuf消息,它在被解析时发生了变化。

我在同一台机器上运行客户端和服务器,并序列化字节流。

我使用Arrays将其与接收到的字节数组进行比较。在java中相等。它说它们是相等的

我的protobuf只有一个fixed32字段来存储IP地址。

我使用了google protobuf 2.4.1和2.5.0版本都没有成功。我还遗漏了什么吗?

异常堆栈

:

com.google.protobuf.InvalidProtocolBufferException: Protocol message contained an invalid tag (zero).
at com.google.protobuf.InvalidProtocolBufferException.invalidTag(InvalidProtocolBufferException.java:89)
at com.google.protobuf.CodedInputStream.readTag(CodedInputStream.java:108)

……

Protobuf代码:

message IpMessage {
    required fixed32 ip = 1;
}
编译:

protoc --java_out=. ip-message.proto

解析消息,我使用:

IpMessage.parseFrom(receivedPkt); //receivedPkt is byte[]

如果您的代码在当前二进制文件位置解析错误的protobuf消息,则出现此错误。在上面的例子中,当前的receivedPkt不是IpMessage

最新更新