在一次项目中,因笔者负责的java端应用需要与公司C++系统进行交互,公司选定Protocol Buffer方案,故简单的了解一下

有需要的可以看一下其他作者的文章,了解一下Protobuf:

http://www.cnblogs.com/stephen-liu74/archive/2013/01/02/2841485.html

http://blog.csdn.net/think_soft/article/details/8227363

====

http://www.cnblogs.com/voipman/p/5330118.html

一定要注意Java与C++两端使用的protobuf版本要保持一致,我使用的是protobuf-2.5.0版本

工具地址:

(1)protoc.exe工具:http://download.csdn.net/download/erli11/7408633

(2)jar包:

案例:http://download.csdn.net/download/erli11/7408809【注:protobuf-2.5.0\examples目录下有相应的.proto文件(addressbook.proto)及测试代码】

对上述案例中由addressbook.proto生成的Java代码的结构的分析如下图所示:

案例测试流程:

1.新建Java工程

2.添加.jar文件

3.新建.prroto文件,添加内容

4.通过命令行将.prroto文件编译为Java代码文件

5.编写测试代码

6.运行并查看结果

==============================================================

下面是摘取我项目中的部分内容形成的简单案例:

新建两个.proto文件(ebdTest.proto、sourceTest.proto),在ebdTest.proto中引入sourceTest.proto中定义的message:

(1)ebdTest.proto

 package com.comtom.proto;

 import "sourceTest.proto";

 option java_outer_classname = "EbdProto";

 message Ebd{
required Source source =1;
}

(2)sourceTest.proto

 package com.comtom.proto;

 message Source{
required string sourceType=1;
required string sourceName=2;
required string sourceID=3;
}

通过命令行编译上述两个.proto文件,生成.java文件,导入工程即可编码测试

(3)测试代码

 package com.comtom.test;

 import com.comtom.proto.SourceTest;
import com.comtom.proto.EbdProto.Ebd; public class ProtobufTest { public static void main(String[] args) { Ebd ebd=Ebd.newBuilder()
.setSource(SourceTest.Source.newBuilder().setSourceType("Test").setSourceName("YanYu").setSourceID("123").build())
.build();
System.out.println(ebd.getSource().getSourceID());
} }

两个系统间进行通信,其中一端充当客户端的角色,另一端充当服务器的角色。在我的项目中,Java端充当客户端,与C++服务器通信,使用Socket实现

参照了网上的几篇文章,需要的朋友看一下就能明白

http://wenku.baidu.com/link?url=_bBHBC2jggjaAuGlWxNljaMoutHD8gjILd63NutlIE-Qz5p7U5-MGiYEFHvcVLgzPYHxLyJuwk9DQ1XcoceT-BiKFBW6fJpIOVXkESrHeb_

此处就不再粘贴我的代码了


http://jm.taobao.org/2013/12/04/389/

http://blog.2baxb.me/archives/841

=========================================================

貌似在Eclipse中有个用于开发Protobuf的插件,没试过,不知道

http://www.360doc.com/content/14/0718/15/16044571_395291178.shtml

Java与C++进行系统间交互:Protocol Buffer的更多相关文章

  1. Mac 系统上安装Protocol buffer

    1. cd /Software/protobuf-2.5.0 2.sudo ./configure --prefix=$/Software/protobuf-2.5.0 3.sudo make 4.s ...

  2. Protocol Buffer使用

    Protocol Buffer使用简介 字数2630 阅读5067 评论1 喜欢12 我们项目中使用protocol buffer来进行服务器和客户端的消息交互,服务器使用C++,所以本文主要描述pr ...

  3. Google Protocol Buffer 的使用和原理[转]

    本文转自: http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/ Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构 ...

  4. Google Protocol Buffer 的使用和原理

    Google Protocol Buffer 的使用和原理 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式.它 ...

  5. 【Google Protocol Buffer】Google Protocol Buffer

    http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/ Google Protocol Buffer 的使用和原理 Protocol Buffers ...

  6. 转Google Protocol Buffer 的使用和原理

    Google Protocol Buffer 的使用和原理 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式.它 ...

  7. Google Protocol Buffer 的使用和原理(无论对存储还是数据交换,都是个挺有用的东西,有9张图做说明,十分清楚)

    感觉Google Protocol Buffer无论对存储还是数据交换,都是个挺有用的东西,这里记录下,以后应该用得着.下文转自: http://www.ibm.com/developerworks/ ...

  8. 【神经网络与深度学习】Google Protocol Buffer介绍

    简介 什么是 Google Protocol Buffer? 假如您在网上搜索,应该会得到类似这样的文字介绍: Google Protocol Buffer( 简称 Protobuf) 是 Googl ...

  9. (转)Google Protocol Buffer 的使用和原理

    转自:https://www.ibm.com/developerworks/cn/linux/l-cn-gpb/index.html   简介 什么是 Google Protocol Buffer? ...

随机推荐

  1. 更改win7关机菜单选项功能

    说明:如果你不希望别人对你的电脑进行注销切换等操,那么可以使用如下的方法 实现效果:          实现步骤: 效果1 1>切换用户: 2>注销:(需重启资源管理器生效) 效果2:

  2. 2018.10.4 AndroidStudio

    AndroidStudio低版本sdkversion开发 Error:Minimum supported Gradle version is 4.1 Current version is 2.14.1 ...

  3. python常见异常及解决方法

    异常1: ValueError: unsupported hash type sha224 ERROR:root:code for hash sha256 was not found. Traceba ...

  4. FastJSON、Gson、Jackson(简单了解使用)

    下载地址(maven) Jackson:http://mvnrepository.com/search?q=jackson FastJson:http://mvnrepository.com/sear ...

  5. SiteMesh配置下载使用(简单介绍)

    简单介绍 SiteMesh 是一个网页布局和修饰的框架,利用它可以将网页的内容和页面结构分离,以达到页面结构共享的目的. Sitemesh是由一个基于Web页面布局.装饰以及与现存Web应用整合的框架 ...

  6. javascript ActiveXObject FileSystemObject 对象,创建、复制、删除、读取文件等

    Javascript是网页制作中离不开的脚本语言,依靠它,一个网页的内容才生动活泼.富有朝气.但也许你还没有发现并应用它的一些更高级的功能吧?比如,对文件和文件夹进行读.写和删除,就象在VB.VC等高 ...

  7. 【题解】洛谷P3627 [APIO2009]抢掠计划(缩点+SPFA)

    洛谷P3627:https://www.luogu.org/problemnew/show/P3627 思路 由于有强连通分量 所以我们可以想到先把整个图缩点 缩点完之后再建一次图 把点权改为边权 并 ...

  8. MFC通过URL下载并保存文件代码 转载

    http://blog.csdn.net/charlessimonyi/article/details/8666108?utm_source=tuicool&utm_medium=referr ...

  9. AngularJS 三 控制器和事件

    AngularJS控制器: ngularJS中的控制器是一个使用 $ scope 对象维护应用程序数据和行为的JavaScript函数. 您可以将属性和方法附加到控制器函数内的 $ scope  对象 ...

  10. watch、computed、methods的区别

    1. `computed`属性的结果会被缓存,除非依赖的响应式属性变化才会重新计算.主要当作属性来使用,要return出去一个值:2. `methods`方法表示一个具体的操作,主要书写业务逻辑:3. ...