日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

Java与C++进行系统间交互:Protocol Buffer

發(fā)布時(shí)間:2024/4/15 c/c++ 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java与C++进行系统间交互:Protocol Buffer 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在一次項(xiàng)目中,因筆者負(fù)責(zé)的java端應(yīng)用需要與公司C++系統(tǒng)進(jìn)行交互,公司選定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目錄下有相應(yīng)的.proto文件(addressbook.proto)及測(cè)試代碼】

對(duì)上述案例中由addressbook.proto生成的Java代碼的結(jié)構(gòu)的分析如下圖所示:

?

?

案例測(cè)試流程:

1.新建Java工程

2.添加.jar文件

3.新建.prroto文件,添加內(nèi)容

4.通過命令行將.prroto文件編譯為Java代碼文件

5.編寫測(cè)試代碼

6.運(yùn)行并查看結(jié)果

?

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

?

下面是摘取我項(xiàng)目中的部分內(nèi)容形成的簡單案例:

新建兩個(gè).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 }

?通過命令行編譯上述兩個(gè).proto文件,生成.java文件,導(dǎo)入工程即可編碼測(cè)試

?

(3)測(cè)試代碼

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 }

?

兩個(gè)系統(tǒng)間進(jìn)行通信,其中一端充當(dāng)客戶端的角色,另一端充當(dāng)服務(wù)器的角色。在我的項(xiàng)目中,Java端充當(dāng)客戶端,與C++服務(wù)器通信,使用Socket實(shí)現(xiàn)

?

參照了網(wǎng)上的幾篇文章,需要的朋友看一下就能明白

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中有個(gè)用于開發(fā)Protobuf的插件,沒試過,不知道

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

轉(zhuǎn)載于:https://www.cnblogs.com/studyLog-share/p/4596735.html

總結(jié)

以上是生活随笔為你收集整理的Java与C++进行系统间交互:Protocol Buffer的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。