[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. 深入jUI(DWZ)

    -----------------------------------------------------------------------------主页面index.html <html& ...

  2. SQL中ISNULL的问题。

    今天在写SQL代码的时候写了个 ISNULL(变量1,变量2),返回的结果居然是 "*" ,这个星号,郁闷了很久. 代码大意如下: ) declare @str2 int sele ...

  3. shiro 会话管理

  4. 吴裕雄 python神经网络 花朵图片识别(10)

    import osimport numpy as npimport matplotlib.pyplot as pltfrom PIL import Image, ImageChopsfrom skim ...

  5. xshell连接不上linux情况一

    设置网络的地址使用桥接方式

  6. 1.3、CDH 搭建Hadoop在安装之前(端口)

    端口 Cloudera Manager,CDH组件,托管服务和第三方组件使用下表中列出的端口.在部署Cloudera Manager,CDH和托管服务以及第三方组件之前,请确保在每个系统上打开这些端口 ...

  7. 1、CDH 搭建Hadoop在安装之前(存储空间规划)

    Cloudera Manager的存储空间规划 最低要求角色: 完全管理员 Cloudera Manager跟踪许多后台进程中的服务,作业和应用程序的度量标准.所有这些指标都需要存储.根据组织的大小, ...

  8. ss源码学习--从协议建立到完成一次代理请求

    上一次介绍了ss源码中各个事件处理函数完成的工作,这次具体分析一下协议的建立以及请求数据的传输过程. 因为ss的local和server共用一个类以及一系列的事件处理函数,所以看起来稍显复杂.下面来将 ...

  9. Mac上安装Git

    转载注明出处:http://blog.csdn.net/xiaohanluo/article/details/53214933 Git安装 下载Git有两种方法 直接下载安装包,Git下载地址 用ho ...

  10. pta7-20 畅通工程之局部最小花费问题(Kruskal算法)

    题目链接:https://pintia.cn/problem-sets/15/problems/897 题意:给出n个城镇,然后给出n×(n-1)/2条边,即每两个城镇之间的边,包含起始点,终点,修建 ...