微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Google Protobuf 解析验证

如何解决Google Protobuf 解析验证

在使用 Google Protobuf 消息设置套接字服务器/客户端对以在 Java 和 C++ 之间进行通信时,我遇到了一些问题,其中套接字通信不正确但 Java 的 parseFrom(byte[]) 或 C++ 的更迂回的方法(即 void * 到 ArrayInputStream 到 CodedInputStream 到 PraseFromCodedStream()) 将输出一个“DefaultInstance”,没有任何错误的迹象。在这种情况下,我的验证方法是检查 C++ *_size() 或 Java *Count() 的某些已初始化的“重复”原型字段的长度是否正确。

既然socket通信是相当值得信赖的,我在Java端工作,“无声失败”行为更令人讨厌。我有两种主要的 protobuf 消息类型,主要的翻译方法是转换到/从 byte[],我承认这限制了验证选项,但仍然如此。

void parseMsg1(byte[] bytes) { m_msg1.parseFrom(字节) }

parseMsg1(Msg2.toByteArray())

我如何防止发生这样的事情,一条消息解析另一条消息的字节?更多详情:

  • Msg2.toByteArray().length 为 32
  • Msg1.toString(),在解析那个字节[]之后,只是一个认/空实例(就像以前一样)

长度为 32 表示包含了一些信息,但是解析时没有更改/添加,这为我抛出了一个标志,但我在库中找不到任何指示“解析这些字节可能并没有像预期的那样进行。”

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。