zmq利用protobuf通信
2024-10-07 20:04:37
protobuf序列化之后为二进制数据,数据中可能包含 ‘\0’,直接转换为char *类型会导致发送数据不完整。
解决方法:
void buildProtobufMsg(const string& test,zmq::message_t *msg)
{
if (msg == nullptr)
{
return;
}
Test::ProtoBufData data;
data.set_test(test);
int size = data.ByteSize();
char arr[size];
data.SerializeToArray(arr,size);
msg->rebuild(size);
memcpy(msg->data(),arr,size);
}
切记不可将序列化之后的数据转成char * 发送,否则导致数据不完整。
调用:
zmq::message_t msg;
buildProtobufMsg(string("hello“),&msg);
zmqsocket.send(msg);
【转】:https://blog.csdn.net/bubbleyang/article/details/82628059
windows:https://blog.csdn.net/gao271003105/article/details/81028944
最新文章
- mongodb 启动脚本和配置
- .net 验证码
- Fibers in JVM
- 强大的commons
- JavaScript事件---事件绑定和深入
- mac上安装gradle
- Linux 性能监测:Network
- java.lang.NoClassDefFoundError Adding a jar to an RCP application
- kafka-manager安装
- c语言字符串翻转系列
- 一个解析RTSP 的URL函数
- [Q]升级/重新获取授权步骤
- 锋利的jQuery中的事件与动画
- 虹软人脸检测和识别C# - API
- Alibaba Java Coding Guidelines
- <;Flume>;<;Source Code>;<;Flume源码阅读笔记>;
- Angular 手动解析表达式
- 58.UIScrollView XIB拖拽约束
- centos7 RabbitMQ部署
- spring boot 事务配置