[z]c++ 和 java 利用protobuf 通讯
[z]http://andinker.iteye.com/blog/1979428
java端的具体步骤如下:
1、首先下载 下载protobuf 编译工具 http://code.google.com/p/protobuf/downloads/detail?name=protobuf-2.4.1.zip&can=2&q=
2、书写protobuf文件
- package tutorial;
- // 商城购买 U_C_SHOP_BUY = 0x005A
- message ShopBuyMsg {
- optional int32 good_id = 1;
- optional int32 count = 2;
- optional int32 receive_id = 3;
- optional int32 result = 4;
- }
3、利用java 命令行,生成 java文件 。
- protoc --java_out=./ ./ShopBuy.proto
生成java文件 ShopBuy.java 文件
4、下载protobuf.jar 包,并且添加到classpath 中去
5、利用生成的java代码,把byte[] 数组,转化为 protobuf对象
- //byte[] 数组为c++ protobuf 传递过来的byte数组
- ShopBuyMsg reqMsg = ShopBuyMsg.parseFrom(byte[]);
6、通过 对象,进行逻辑操作 。
c++ 端的具体步骤如下:
1、下载protobuf的源码 http://code.google.com/p/protobuf/downloads/detail?name=protobuf-2.4.1.zip&can=2&q=
2、打开源码,并且编译lib库,如下图所示

接着用vs打开,并且编译,生成lib库

把生成的动态库拷贝到 c++项目的工程目录,并且配置好链接库文件输入,如下图:

3、利用命令行,生成c++ protobuf文件,如下图
- protoc -I=./ --cpp_out=./ ./ShopBuy.proto
- // -I :当前目录
- //--cpp_out:文件输出目录
- // 后面跟的是要生成的 proto文件
生成了 ShopBuy.pb.h 和 ShopBuy.pb.cc 文件
4、引入protobuf头文件,并配置c++ 配置目录

5、在引用的文件中引入头文件 #include "protobuf/ShopBuy.pb.h"
5、代码中应用
- tutorial::ShopBuyMsg shopMsg ;
- shopMsg.set_good_id(123);
- shopMsg.set_count(2);
- shopMsg.set_receive_id(1);
- shopMsg.set_result(1);
- std::string str = shopMsg.SerializeAsString();
- const char* protoMsg = str.c_str() ;
- //下面为tcp 发送数据
- stream.writeUTF(protoMsg);
- write(stream);
[z]c++ 和 java 利用protobuf 通讯的更多相关文章
- ProtocolBuffers (二) android与PC,C#与Java 利用protobuf 进行无障碍通讯【Socket】
protobuf 是什么? Protocol buffers是一种编码方法构造的一种有效而可扩展的格式的数据. 谷歌使用其内部几乎RPC协议和文件格式的所有协议缓冲区. 参考文档 http://c ...
- java netty socket库和自定义C#socket库利用protobuf进行通信完整实例
之前的文章讲述了socket通信的一些基本知识,已经本人自定义的C#版本的socket.和java netty 库的二次封装,但是没有真正的发表测试用例. 本文只是为了讲解利用protobuf 进行C ...
- Java利用Rxtx进行串口通讯
最近在做传感器数据采集的工作,底层是基于Zigbee的无线传感网络,所有数据采集到Zigbee协调器上然后通知上位机数据采集完成,上位机通过USB转串口去读取数据就可以了.那么问题来了,如何进行串口通 ...
- Redis入门和Java利用jedis操作redis
Redis入门和Java利用jedis操作redis Redis介绍 Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库. Redis 与其他 key - val ...
- java利用JDK调用并执行js源码
前言: 不同开发语言之间具有通用性,更具有协作调用的可能.有时候对于一些场景会有调用js的需求,因此下面展示了一个java利用自身JDK调用js函数的demo,供感兴趣的朋友参考. js函数文件 ex ...
- Java利用Preferences设置个人偏好
Java利用Preferences设置个人偏好 Preferences的中文意思即偏好或喜好的意思,也就是说同一个程序在每次运行完后,可以通过Preferences来记录用户的偏好,下次启动时,程序会 ...
- Java利用POI导入导出Excel中的数据
首先谈一下今天发生的一件开心的事,本着一颗android的心我被分配到了PB组,身在曹营心在汉啊!好吧,今天要记录和分享的是Java利用POI导入导出Excel中的数据.下面POI包的下载地 ...
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板
java 利用spring JavaMailSenderImpl发送邮件,支持普通文本.附件.html.velocity模板 博客分类: Java Spring 本文主要介绍利用JavaMailS ...
- 谈谈Java利用原始HttpURLConnection发送POST数据
这篇文章主要给大家介绍java利用原始httpUrlConnection发送post数据,设计到httpUrlConnection类的相关知识,感兴趣的朋友跟着小编一起学习吧 URLConnectio ...
随机推荐
- python小实例一:简单爬虫
本文所谓的爬虫就是通过本地远程访问url,然后将url的读成源代码形式,然后对源代码进行解析,获取自己需要的数据,相当于简单数据挖掘.本文实现的是将一个网页的图片爬出保存到本地的过程,例子很简单,用的 ...
- RunAsAdmin
program AdminCMD; {$APPTYPE CONSOLE} uses Windows, ShellApi, SysUtils; function RunAsAdmin(const ...
- GankApp 侧滑和title修改颜色的完整项目app
GankApp 侧滑和title修改颜色的完整项目app GankApp 侧滑和title修改颜色的完整项目app,本项目主要由侧滑框架和4.4以及以上的头部title颜色调整和, 首页viewpag ...
- JAVA 实验报告
石家庄铁道大学信息科学与技术学院 实验报告 2018年----2019年 第一学期 题目: 四则运算.生成验证码 课程名称: JAVA语言程序设 ...
- vue 父向子组件传递数据,子组件向父组件传递数据方式
父组件向子组件传递数据通过props,子组件引入到父组件中,设置一个值等于父组件的数据,通过:bind将数据传到子组件中,子组件中通过props接收父组件的数据,这样就可以使用父组件的数据了,循环组件 ...
- shell脚本中比较两个小数的办法
具体情况#man bc 然而对小数进行比较的相关方法有几个: 1. 自己的解决方法,判断小数点后最多有几位数(N),然后对将要比较的两个数值进行 乘与10的N次方 也就是将小数点去掉来进行比较(小数点 ...
- Shared Preferences
[Shared Preferences] 1.SharedPreferences class. Interface for accessing and modifying preference da ...
- npm run build
[npm run build] npm 会在项目的 package.json 文件中寻找 scripts 区域,其中包括npm test和npm start等命令. 其实npm test和npm st ...
- javascript学习笔记(四):DOM操作HTML
当网页被加载时,浏览器会创建页面的文档对象模型Document Object Model,简称DOM Dom操作html 1:改变页面中所有HTML元素 2:改变页面中所有HTML属性 3:改变页面中 ...
- w3af安装
基于python开发,由于kali自带的w3af无法正常使用 安装新的w3af apt-get update apt-get install kali-linux-all安装所有工具包 apt-get ...