Java与C++进行系统间交互:Protocol Buffer
在一次项目中,因笔者负责的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相关推荐
- java数据同步处理_[java数据库同步解决方案]系统间通讯实现数据信息实时同步解决方案...
项目开发阶段遇到一个需求,描述大致就是同一个用户在A系统数据库保存的数据信息与在B系统数据库保存的数据信息要保持同步.当A系统用户修改了个人信息,A系统后台在将用户修改后的信息入库的同时也会向B系统发 ...
- 系统间数据交互注意项
先了解点问题: ◎ 是否担心数据丢失,比如丢失率 1%? ◎ 系统时效性要求是否很高,比如是:实时.秒级.分钟级还是小时级? ◎ 系统间网络环境是否OK,比如是:互联网.同机房.同城专线? ◎ 系统间 ...
- Google Protocol Buffer 的使用和原理
FROM : https://www.ibm.com/developerworks/cn/linux/l-cn-gpb/ Google Protocol Buffer 的使用和原理 Protocol ...
- Google Protocol Buffer 的使用和原理(c++)
简介 什么是 Google Protocol Buffer? 假如您在网上搜索,应该会得到类似这样的文字介绍: Google Protocol Buffer( 简称 Protobuf) 是 Googl ...
- 架构设计:系统间通信(4)——IO通信模型和JAVA实践 中篇
接上篇<架构设计:系统间通信(3)--IO通信模型和JAVA实践 上篇> 4.多路复用IO模型 在"上篇"文章中,我们已经提到了使用多线程解决高并发场景的问题所在,这篇 ...
- 架构设计:系统间通信(5)——IO通信模型和JAVA实践 下篇
接上篇:<架构设计:系统间通信(4)--IO通信模型和JAVA实践 中篇>,我们继续讲解 异步IO 7.异步IO 上面两篇文章中,我们分别讲解了阻塞式同步IO.非阻塞式同步IO.多路复用I ...
- java计算机毕业设计失物招领信息交互平台源代码+数据库+系统+lw文档
java计算机毕业设计失物招领信息交互平台源代码+数据库+系统+lw文档 java计算机毕业设计失物招领信息交互平台源代码+数据库+系统+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...
- JAVA易医就医购药交互平台计算机毕业设计Mybatis+系统+数据库+调试部署
JAVA易医就医购药交互平台计算机毕业设计Mybatis+系统+数据库+调试部署 JAVA易医就医购药交互平台计算机毕业设计Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 ...
- 系统间数据交互的方案探讨
系统间数据交互的方案探讨 ===================================== 互联网时代, 1等公民是建立规范和协议的人 2等公民是提供服务的人 3等公民是开发软件的人 4等公 ...
最新文章
- python post请求 上传图片_利用python模拟实现POST请求提交图片的方法
- Redis和Memcache的区别总结
- weblogic从入门到起飞(nodemanager)(五)
- GPU云服务器+tensorboard
- SFP光模块是什么? SFP光模块的类型及应用介绍!
- JS学习笔记-1--基本知识和注意事项
- uinty粒子系统子物体变大_Unity的粒子系统(一)基础篇
- WebView起步1
- osip2 代码分析
- 【Flink】Flink 运行 实时修改消费组offset
- python 工程 ——文件、包、__init__及导入方法
- python 入门基础-如何学习Python,以及新手如何入门?
- mysql initialsize,单机数据库优化
- Unity XCode 拨号和一键加群
- 2020年计算机系毕业人数,2020年中国大学生各专业就业报告出炉:计算机类专业月薪最高!...
- Python下载网易云歌曲(版权限制的怎么播放和下载呢?)
- Android 限制启动应用最大使用内存,可供极限测试时使用
- Altium Designer学习笔记——布线技巧
- Gdal关于CAD转SHP格式
- 递归分类最佳实践:如何在强化学习中用示例代替奖励