首页 > 其他 > 详细

zmq利用protobuf通信

时间:2019-08-14 11:22:41      阅读:305      评论:0      收藏:0      [点我收藏+]

 

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

 

zmq利用protobuf通信

原文:https://www.cnblogs.com/hshy/p/11350314.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!