[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文件

  1. package tutorial;
  2. //  商城购买 U_C_SHOP_BUY = 0x005A
  3. message ShopBuyMsg {
  4. optional int32 good_id = 1;
  5. optional int32 count = 2;
  6. optional int32 receive_id = 3;
  7. optional int32 result = 4;
  8. }

3、利用java 命令行,生成 java文件 。

  1. protoc  --java_out=./   ./ShopBuy.proto

生成java文件   ShopBuy.java 文件

4、下载protobuf.jar 包,并且添加到classpath 中去

5、利用生成的java代码,把byte[] 数组,转化为 protobuf对象

  1. //byte[] 数组为c++  protobuf 传递过来的byte数组
  2. 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文件,如下图

  1. protoc -I=./ --cpp_out=./ ./ShopBuy.proto
  2. // -I :当前目录
  3. //--cpp_out:文件输出目录
  4. //  后面跟的是要生成的 proto文件

生成了  ShopBuy.pb.h  和 ShopBuy.pb.cc 文件

4、引入protobuf头文件,并配置c++ 配置目录

5、在引用的文件中引入头文件   #include "protobuf/ShopBuy.pb.h"

5、代码中应用

  1. tutorial::ShopBuyMsg shopMsg ;
  2. shopMsg.set_good_id(123);
  3. shopMsg.set_count(2);
  4. shopMsg.set_receive_id(1);
  5. shopMsg.set_result(1);
  6. std::string str = shopMsg.SerializeAsString();
  7. const char* protoMsg = str.c_str() ;
  8. //下面为tcp 发送数据
  9. stream.writeUTF(protoMsg);
  10. write(stream);

[z]c++ 和 java 利用protobuf 通讯的更多相关文章

  1. ProtocolBuffers (二) android与PC,C#与Java 利用protobuf 进行无障碍通讯【Socket】

    protobuf 是什么?   Protocol buffers是一种编码方法构造的一种有效而可扩展的格式的数据. 谷歌使用其内部几乎RPC协议和文件格式的所有协议缓冲区. 参考文档 http://c ...

  2. java netty socket库和自定义C#socket库利用protobuf进行通信完整实例

    之前的文章讲述了socket通信的一些基本知识,已经本人自定义的C#版本的socket.和java netty 库的二次封装,但是没有真正的发表测试用例. 本文只是为了讲解利用protobuf 进行C ...

  3. Java利用Rxtx进行串口通讯

    最近在做传感器数据采集的工作,底层是基于Zigbee的无线传感网络,所有数据采集到Zigbee协调器上然后通知上位机数据采集完成,上位机通过USB转串口去读取数据就可以了.那么问题来了,如何进行串口通 ...

  4. Redis入门和Java利用jedis操作redis

    Redis入门和Java利用jedis操作redis Redis介绍 Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库. Redis 与其他 key - val ...

  5. java利用JDK调用并执行js源码

    前言: 不同开发语言之间具有通用性,更具有协作调用的可能.有时候对于一些场景会有调用js的需求,因此下面展示了一个java利用自身JDK调用js函数的demo,供感兴趣的朋友参考. js函数文件 ex ...

  6. Java利用Preferences设置个人偏好

    Java利用Preferences设置个人偏好 Preferences的中文意思即偏好或喜好的意思,也就是说同一个程序在每次运行完后,可以通过Preferences来记录用户的偏好,下次启动时,程序会 ...

  7. Java利用POI导入导出Excel中的数据

         首先谈一下今天发生的一件开心的事,本着一颗android的心我被分配到了PB组,身在曹营心在汉啊!好吧,今天要记录和分享的是Java利用POI导入导出Excel中的数据.下面POI包的下载地 ...

  8. java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板

    java 利用spring JavaMailSenderImpl发送邮件,支持普通文本.附件.html.velocity模板 博客分类: Java Spring   本文主要介绍利用JavaMailS ...

  9. 谈谈Java利用原始HttpURLConnection发送POST数据

    这篇文章主要给大家介绍java利用原始httpUrlConnection发送post数据,设计到httpUrlConnection类的相关知识,感兴趣的朋友跟着小编一起学习吧 URLConnectio ...

随机推荐

  1. 遍历DOM树,链式操作

    如果需要在同一个选取结果上使用多个jQuery方法,可以同时列出这些方法,并用.隔开,如下面的代码. 1 $("#one").hide().delay(500).fadeIn(15 ...

  2. 解决eclipse+adt出现的 loading data for android 问题

    因为公司最近做的项目中有用到一些第三方demo,蛋疼的是这些demo还比较旧...eclipse的... 于是给自己的eclipse装上了ADT插件,但是...因为我的eclipse比较新,Versi ...

  3. RxJava2.0学习笔记2 2018年7月3日 周二

    摘记: 1.map -- 转换  有些服务端的接口设计,会在返回的数据外层包裹一些额外信息,这些信息对于调试很有用,但本地显示是用不到的.使用 map() 可以把外层的格式剥掉,只留下本地会用到的核心 ...

  4. django 认证系统--1

    django的认证系统提供认证和授权两种功能 认证系统包括如下部分: 1.Users 2.Permissions 主要是以 YES/NO 的形式反映一个用户是否能够做某事 3.Groups:就是对多个 ...

  5. 重装unbantu 问题集合,下载别人的代码运行问题集合

    安装angular 的时候要全局设置 npm install -g angular-cli nodemon server.js 出现[nodemon] Internal watch failed:xx ...

  6. [转载]FMS Dev Guide学习笔记(验证客户端二)

    一.开发交互式的媒体应用程序 1.使用unique key a. 在客户端ActionScript中创建一个unique key,如下代码所示,unique key的组成为本地电脑时间和一个随机数连接 ...

  7. you-get

    1.打开cmd,输入命令并执行 pip3 install you-get 2.输入命令,检测 You-Get 是否安装成功 you-get 3.开始下载吧 you-get [视频地址]you-get ...

  8. 判断用户 是用的电脑还是手机 判断 是安卓还是IOS

    $(function(){ var Terminal = { // 辨别移动终端类型 platform: function () { var u = navigator.userAgent, app ...

  9. python之流程控制

    流程控制之if-else if 条件1: 满足条件1的情况 else if 条件2: 满足条件2的情况 if 条件2.1: 满足条件2.1的情况(if-else语句的嵌套) else if 条件2.2 ...

  10. cakePHP 分页栏

    <div class="page"><?php if ($total > 1) echo $this->element('page_list', ar ...