zmq利用protobuf通信
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通信的更多相关文章
- java netty socket库和自定义C#socket库利用protobuf进行通信完整实例
之前的文章讲述了socket通信的一些基本知识,已经本人自定义的C#版本的socket.和java netty 库的二次封装,但是没有真正的发表测试用例. 本文只是为了讲解利用protobuf 进行C ...
- [z]c++ 和 java 利用protobuf 通讯
[z]http://andinker.iteye.com/blog/1979428 java端的具体步骤如下: 1.首先下载 下载protobuf 编译工具 http://code.google ...
- 利用Socket通信
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. 建立网络通信连接至少要一对端口号(socket).socket本质是编程接口(API),对TCP/IP的封装 ...
- ProtocolBuffers (二) android与PC,C#与Java 利用protobuf 进行无障碍通讯【Socket】
protobuf 是什么? Protocol buffers是一种编码方法构造的一种有效而可扩展的格式的数据. 谷歌使用其内部几乎RPC协议和文件格式的所有协议缓冲区. 参考文档 http://c ...
- java与C#用protobuf通信--java如何转换protobuf-net中的bcl.Decimal对象
公司内部有些C#服务使用proto-net,引入了bcl.proto中的bcl.Decimal.bcl.DateTime等.对于java的proto生成代码需要对bcl.Decimal.bcl.Dat ...
- Cocos2d-JS/Ajax用Protobuf与NodeJS/Java通信
原文地址:http://www.iclojure.com/blog/articles/2016/04/29/cocos2d-js-ajax-protobuf-nodejs-java Google的Pr ...
- 全图文分析:如何利用Google的protobuf,来思考、设计、实现自己的RPC框架
目录 一.前言 二.RPC 基础概念 1. RPC 是什么? 2. 需要解决什么问题? 3. 有哪些开源实现? 三.protobuf 基本使用 1. 基本知识 2. 使用步骤 四.libevent 1 ...
- 基于.NET框架的消息通信组件ZMQ资料汇编-总目录
ZMQ是一个比较轻量级的消息通信组件,引用官方的说法: “ZMQ (以下 ZeroMQ 简称 ZMQ)是一个简单好用的传输层,像框架一样的一个 socket library,他使得 Socket 编程 ...
- ZMQ通信模式
本文简要介绍ZMQ常用的通信模式 请求响应模式 常规搭配:ZMQ_REQ + ZMQ_REP 带输入负载(Round Robin)均衡搭配:ZMQ_REQ + ZMQ_ROUTER 消息分发搭配:ZM ...
随机推荐
- USACO Wifi Setup /// 贪心
题目大意: 若在x处防止一个覆盖范围为r的wifi基站 可以覆盖 x-r 到 x+r 范围 花费为 A+B*r 给定n 给定n个奶牛的位置 求覆盖所有奶牛的最小费用 (可设置任意多个wifi基站) 贪 ...
- 分布式-技术专区-Redis分布式锁实现-第二步
再上次篇章中汇集了相关的分布式锁的概念进行控制,接下来我们采用的是注解声明式开发服务方案,进行声明式开发代替编程式开发方案. 1.利用aop实现分布式锁2.只用在方法上加个注解,同时加上了重试机制 ...
- 视频专家之路【四】:ffmpeg简单实战之获取属性
本文是听了雷宵骅大神的课之后的总结,部分内容借用了其PPT的内容,如有侵权请告知删除. 雷宵骅大神的博客为:https://blog.csdn.net/leixiaohua1020 本节的目的正式开始 ...
- 一篇不一样的Android屏幕适配具体做法(原创)
转载请注明出处(http://www.cnblogs.com/weizhxa/p/7568090.html ) 有不正确,还请大家留言修正! 1.何谓屏幕适配:在任何设备上看起来布局都是近似的,细分也 ...
- socket中的绑定
- React 表单元素实例
代码实例: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset=" ...
- vue Inline JavaScript is not enabled. Is it set in your options?
Vue 全家桶 vue全面介绍--全家桶.项目实例 https://www.cnblogs.com/nogodie/p/9853660.html vue项目 Inline JavaScript is ...
- cboard进行访问,汉化
- Vue学习笔记【24】——Vue组件(组件切换)
使用flag标识符结合v-if和v-else切换组件 页面结构:(缺点:只适用于两个组件间切换,不适合多个) <div id="app"> <input ...
- HTML5的新增功能有哪些?
HTML5 将成为 HTML.XHTML 以及 HTML DOM 的新标准. 新的功能: 1.用于绘画的 canvas 元素 2.用于媒介回放的 video 和 audio 元素 3.对本地离线存储的 ...