java 解析protobuf时出现InvalidProtocolBufferException-无效标记(零)

q3qa4bjr  于 11个月前  发布在  Java
关注(0)|答案(1)|浏览(136)

我有一个protobuf消息,它在解析时被抓取。
我在同一台机器上运行客户机和服务器,并序列化字节流。
我用java中的Arrays.equal把它和接收到的字节数组进行比较。它说它们是相等的。
我的protobuf只有一个fixed32字段存储IP地址。
我用了google protobuf 2.4.1和2.5.0两个版本都没有成功。我在这里错过了什么吗?
Stacktrace:

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[]

watbbzwu

watbbzwu1#

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

相关问题