在一次项目中,因笔者负责的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

1 package com.comtom.proto;
2
3 import "sourceTest.proto";
4
5 option java_outer_classname = "EbdProto";
6
7 message Ebd{
8       required Source source =1;
9 }

(2)sourceTest.proto

1 package com.comtom.proto;
2
3 message Source{
4     required string sourceType=1;
5     required string sourceName=2;
6     required string sourceID=3;
7 }

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

(3)测试代码

 1 package com.comtom.test;
 2
 3 import com.comtom.proto.SourceTest;
 4 import com.comtom.proto.EbdProto.Ebd;
 5
 6 public class ProtobufTest {
 7
 8     public static void main(String[] args) {
 9
10         Ebd ebd=Ebd.newBuilder()
11             .setSource(SourceTest.Source.newBuilder().setSourceType("Test").setSourceName("YanYu").setSourceID("123").build())
12             .build();
13         System.out.println(ebd.getSource().getSourceID());
14     }
15
16 }

两个系统间进行通信,其中一端充当客户端的角色,另一端充当服务器的角色。在我的项目中,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

转载于:https://www.cnblogs.com/studyLog-share/p/4596735.html

Java与C++进行系统间交互:Protocol Buffer相关推荐

  1. java数据同步处理_[java数据库同步解决方案]系统间通讯实现数据信息实时同步解决方案...

    项目开发阶段遇到一个需求,描述大致就是同一个用户在A系统数据库保存的数据信息与在B系统数据库保存的数据信息要保持同步.当A系统用户修改了个人信息,A系统后台在将用户修改后的信息入库的同时也会向B系统发 ...

  2. 系统间数据交互注意项

    先了解点问题: ◎ 是否担心数据丢失,比如丢失率 1%? ◎ 系统时效性要求是否很高,比如是:实时.秒级.分钟级还是小时级? ◎ 系统间网络环境是否OK,比如是:互联网.同机房.同城专线? ◎ 系统间 ...

  3. Google Protocol Buffer 的使用和原理

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

  4. Google Protocol Buffer 的使用和原理(c++)

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

  5. 架构设计:系统间通信(4)——IO通信模型和JAVA实践 中篇

    接上篇<架构设计:系统间通信(3)--IO通信模型和JAVA实践 上篇> 4.多路复用IO模型 在"上篇"文章中,我们已经提到了使用多线程解决高并发场景的问题所在,这篇 ...

  6. 架构设计:系统间通信(5)——IO通信模型和JAVA实践 下篇

    接上篇:<架构设计:系统间通信(4)--IO通信模型和JAVA实践 中篇>,我们继续讲解 异步IO 7.异步IO 上面两篇文章中,我们分别讲解了阻塞式同步IO.非阻塞式同步IO.多路复用I ...

  7. java计算机毕业设计失物招领信息交互平台源代码+数据库+系统+lw文档

    java计算机毕业设计失物招领信息交互平台源代码+数据库+系统+lw文档 java计算机毕业设计失物招领信息交互平台源代码+数据库+系统+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...

  8. JAVA易医就医购药交互平台计算机毕业设计Mybatis+系统+数据库+调试部署

    JAVA易医就医购药交互平台计算机毕业设计Mybatis+系统+数据库+调试部署 JAVA易医就医购药交互平台计算机毕业设计Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 ...

  9. 系统间数据交互的方案探讨

    系统间数据交互的方案探讨 ===================================== 互联网时代, 1等公民是建立规范和协议的人 2等公民是提供服务的人 3等公民是开发软件的人 4等公 ...

最新文章

  1. python post请求 上传图片_利用python模拟实现POST请求提交图片的方法
  2. Redis和Memcache的区别总结
  3. weblogic从入门到起飞(nodemanager)(五)
  4. GPU云服务器+tensorboard
  5. SFP光模块是什么? SFP光模块的类型及应用介绍!
  6. JS学习笔记-1--基本知识和注意事项
  7. uinty粒子系统子物体变大_Unity的粒子系统(一)基础篇
  8. WebView起步1
  9. osip2 代码分析
  10. 【Flink】Flink 运行 实时修改消费组offset
  11. python 工程 ——文件、包、__init__及导入方法
  12. python 入门基础-如何学习Python,以及新手如何入门?
  13. mysql initialsize,单机数据库优化
  14. Unity XCode 拨号和一键加群
  15. 2020年计算机系毕业人数,2020年中国大学生各专业就业报告出炉:计算机类专业月薪最高!...
  16. Python下载网易云歌曲(版权限制的怎么播放和下载呢?)
  17. Android 限制启动应用最大使用内存,可供极限测试时使用
  18. Altium Designer学习笔记——布线技巧
  19. Gdal关于CAD转SHP格式
  20. 递归分类最佳实践:如何在强化学习中用示例代替奖励

热门文章

  1. SPSS分析:Bootstrap
  2. java Servlet学习笔记(一)
  3. 根据坐标查500米范围内站点
  4. H3 BPM报销流程开发示例
  5. 程序员也要寻找贸易的机会,要参加研讨会
  6. Excel 公式(细节若干)
  7. 64位以内Rabin-Miller 强伪素数测试和Pollard rho 因数分解解析
  8. php 数据集转换树、递归重组节点信息多维数组(转)
  9. 保护你的Web服务器 iptables防火墙脚本全解读
  10. nginx配置反向代理解决前后端分离跨域问题