gpt4 book ai didi

c++ - 序列化的 Protobuf 有空字节,不能被 ZMQ 发送

转载 作者:行者123 更新时间:2023-11-30 05:11:52 25 4
gpt4 key购买 nike

我目前正在尝试使用 zmq 发送一些 protobuf,到目前为止效果很好。现在我启动了一个不同的(并且更复杂的)protobuf,它停止工作了。

我已经发现了错误,即 protobuf 对象的反序列化创建了一个包含空字节 \0 的字符串。

编辑:
我想我已经找到原因了。在 zmq_send 中有一行调用了 memcpy。由于 \0 之后的所有内容都应该不可访问,因此我得到一个错误。仍然不知道该怎么做。

到目前为止我还没有想出解决这个问题的方法,你们有什么想法吗?

最佳答案

请向您展示代码。目前尚不清楚您做什么以及期望得到什么。 protobuf 和 zmq 都没有绑定(bind)到 ASCIIZ。以下示例序列适用于 protobuf 结构 pb 中的任何类型的数据

reqSize = pb->ByteSize();
reqBuf = new char [reqSize];
pb->SerializeToArray(reqBuf, reqSize);
zmq_send(zc, reqBuf, reqSize, 0);

关于c++ - 序列化的 Protobuf 有空字节,不能被 ZMQ 发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44848635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com