protobuf

protobuf在websocket通讯中的使用

痞子三分冷 提交于 2019-12-11 07:35:08
教程目录 一 protobuf简介 二 使用protobuf 三 Demo下载 参考: CSDN:Egret项目中使用protobuf (protobufjs) TS项目中使用Protobuf的解决方案 (babel) 在cocos creator中使用protobufjs layabox:网络和格式--ProtocolBuffer egret protobuf (egret官方提供的工具,自动配置和生成) protobuf简介 百度百科:protocolbuffer(以下简称PB)是google 的一种数据交换的格式,它独立于语言, 独立 于平台。google 提供了多种语言的实现:java、 c# 、 c++ 、go 和 python ,每一种实现都包含了相应语言的 编译器 以及库文件。由于它是一种二进制的格式,比使用 xml 进行数据交换快许多。可以把它用于 分布式应用 之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。 参考: protocol buffer_百度百科 中重度游戏开发框架:EGER PRO开发教程 google_protobuf数据类型 使用protobuf 1 导入第三方库 我直接把protobuf第三方库放在了项目中.. 修改egretProperties

Protocol Buffer nano在Mbed OS中的使用

女生的网名这么多〃 提交于 2019-12-10 19:48:13
Protocol Buffer 是google 公司开发的结构化数据序列化/反序列化方法。它比json和XML 效率更高。我们在ModularIoT 中使用Protocol buffer 实现消息体的编解码。当然也希望在微处理器cortex-M 的微服务器中也可以使用protobuf的编解码。网络上看见一个Protocol Buffer Nano 的项目。而且在Mbed OS 社区也发现了相关的项目。 ubuntu上安装 protoc-c 工具 apt-get install protobuf-c-compiler 编写proto 文件 syntax = "proto3"; package websocket; message WebsocketMessage { string Topic =1; bytes Body=2; } message GenericRPC { string Method =1; string To=2; string From =3; int32 Code=4; bytes parameters=5; } 下载包 nanopb 包 nanopb 并不是标准的protobuf 所以要下载专用的程序包 nanopb git clone https://github.com/nanopb/nanopb.git protobuf nano 要使用特殊的转换器

gogoprotobuf使用(下)

我怕爱的太早我们不能终老 提交于 2019-12-10 08:41:36
声明:版权所有,谢绝转载。 承接上文 《gogoprotobuf使用(上)》 ,继续说明gogoprotobuf的各个option。 9 gogoproto.testgen & gogoproto.testgen_all testgen选项为true,则gogo会为相应的message生成一个测试用例与性能测试用例。testgen_all则为相应的package level的option。 pb code: option (gogoproto.testgen_all) = true; option (gogoproto.benchgen_all) = true; message A { string msg = 1; } go code: package test import testing "testing" import math_rand "math/rand" import time "time" import github_com_gogo_protobuf_proto "github.com/gogo/protobuf/proto" import encoding_json "encoding/json" func TestAProto(t *testing.T) { popr := math_rand.New(math_rand.NewSource(time.Now

gogoprotobuf使用(上)

。_饼干妹妹 提交于 2019-12-10 08:25:01
声明:版权所有,谢绝转载。 在go中使用google protobuf,有两个可选用的包: goprotobuf (go官方出品)和 gogoprotobuf (gogo组织出品^_^)。 gogoprotobuf能够完全兼容google protobuf。而且经过我一些测试,它生成大代码质量确实要比goprotobuf高一些,主要是它在goprotobuf之上extend了一些option。这些option也是有级别区分的,有的option只能修饰field,有的可以修饰enum,有的可以修饰message,有的是修饰package(即对整个文件都有效)。下面一一说明其一些选项的意义。 另外,本文的所有proto示例都是proto v3格式。 1 gogoproto.goproto_enum_prefix 如果选项为false,则生成的代码中不加"E_"。 pb code: enum E { // option (gogoproto.goproto_enum_prefix) = false; A = 0; B = 2; } go code: const ( // option (gogoproto.goproto_enum_prefix) = false; E_A E = 0 E_B E = 2 ) or pb code: enum E { // option

在netty中使用google protobuf

给你一囗甜甜゛ 提交于 2019-12-10 08:10:34
netty版本5.0,google protobuf版本2.5. netty自带的例子io.netty.example.worldclock,就是使用protobuf作为网络协议. 本文实现客户端-服务端之间请求-响应的网络协议,会在 worldclock例子上稍作扩展. 首先定义protobuf,对于多种请求的格式,使用 Union Type ,以下Login,Service分别扩展了Request. message Request { extensions 100 to max; enum Type{ LOGIN=0; SERVICE=1; } required Type type=1; } extend Request { optional Login login = 100; optional Service service = 101; } message Login { required string user = 1; required string pswd = 2; } message Service { optional string content = 1; } message Response { optional string result = 1; } 客户端的主要代码,其他参考 worldclock例子. Login login = Login

Netty with protobuf(二)

风格不统一 提交于 2019-12-10 08:10:22
http://my.oschina.net/xinxingegeya/blog/295031 上一篇了解了protobuf,现在结合netty做一个例子。 关键就是配置netty的编解码器,因为netty提供了protobuf的编解码器,所以我们可以很容易的使用netty提供的编解码器使用protobuf数据交换协议进行通信。。 下面是示例代码,对于了解的netty的同学应该不难看懂。 服务器端程序: ProtobufNettyServer.java package com.example.tutorial; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioServerSocketChannel; import telnet.TelnetServerInitializer; /** * Created with IntelliJ IDEA. * User: ASUS * Date: 14-7-22 * Time: 下午8:26 * To change this template use File |

Netty with protobuf(一)

房东的猫 提交于 2019-12-10 07:54:00
Netty with protobuf 这是一篇关于netty和protobuf2的文章,先来介绍一下protobuf的简单使用。网上有很多基本的protobuf的介绍,这里就不在赘述了。 protobuf官网上提供了一个例子,我们就拿那个例子来改造: proto文件描述了消息的结构,这个文件时这样的 package tutorial; option java_package = "com.example.tutorial"; option java_outer_classname = "AddressBookProtos"; message Person { required string name = 1; required int32 id = 2; optional string email = 3; enum PhoneType { MOBILE = 0; HOME = 1; WORK = 2; } message PhoneNumber { required string number = 1; optional PhoneType type = 2 [default = HOME]; } repeated PhoneNumber phone = 4; } message AddressBook { repeated Person person = 1; }

序列化和反序列化-刘丁

为君一笑 提交于 2019-12-09 13:08:08
#一、定义以及相关概念 互联网的产生带来了机器间通讯的需求,而互联通讯的双方需要采用约定的 协议 ,序列化和反序列化属于通讯 协议 的一部分。通讯 协议 往往采用分层模型,不同模型每层的功能定义以及颗粒度不同,例如:TCP/IP 协议 是一个四层 协议 ,而OSI模型却是七层 协议 模型。 在 OSI七层 协议 模型中 展现层 (Presentation Layer) 的主要功能是把 应用层 的 对象 转换成一段连续的 二进制串 ,或者反过来,把 二进制串 转换成 应用层 的 对象 --这两个功能就是序列化和反序列化。 一般而言, TCP/IP 协议 的 应用层 对应与 OSI七层 协议 模型的 应用层 ,展示层和会话层 ,所以序列化 协议 属于 TCP/IP 协议 应用层 的一部分。 本文对序列化 协议 的讲解主要基于 OSI七层 协议 模型 。 序列化: 将 数据结构 或 对象 转换成 二进制串 的过程 反序列化:将在序列化过程中所生成的 二进制串 转换成 数据结构 或者 对象 的过程 数据结构 、 对象 与 二进制串 不同的计算机语言中, 数据结构 , 对象 以及 二进制串 的表示方式并不相同。 数据结构 和 对象 :对于类似Java这种完全面向 对象 的语言,工程师所操作的一切都是 对象 (Object),来自于类的实例化。在Java语言中最接近 数据结构 的概念

多语言跨平台序列化框架Google Protobuf-with Netty

情到浓时终转凉″ 提交于 2019-12-09 10:27:12
##protoc安装 下载Protobuf [Protobuf][ https://code.google.com/p/protobuf/ ] 我下载的是Protobuf 2.5.0版本. 如果是Windows系统,可直接下载win32, 解压出protoc.exe到任意目录.Linux系统下载后还需要自行编译 tar zxvf protobuf-2.5.0.tar.gz cd protobuf-2.5.0 ./configure --prefix=/usr/local/protobuf make make check sudo make install 如果编译出错,自行解决,直到安装成功. $protoc --version libprotoc 2.5.0 ##Protobuf消息定义,数据类型 完整的Protobuf数据类型见 [text][ http://www.cnblogs.com/dkblog/archive/2012/03/27/2419010.html ] ##protoc的简单使用 当定义好了一个消息的协议,如下协议,命名为hello.proto <pre class="prettyprint"> option java_package = "net.test.protobuf"; option java_outer_classname =

Google protobuf的安装 

家住魔仙堡 提交于 2019-12-06 21:52:06
下载: http://download.openpkg.org/components/cache/protobuf/protobuf-2.5.0.tar.bz2 tar -xf protobuf-2.5.0.tar.bz2 cd protobuf-2.5.0 编译安装 ./configure make make check make install 继续安装protobuf的python模块(如果不用python,可跳过这一步) #cd ./python #python setup.py build #python setup.py test #python setup.py install 安装完成,验证Linux命令 #protoc –version 验证Python模块是否被正确安装 #python >>>import google.protobuf 如果没有报错,说明安装正常。 来源: oschina 链接: https://my.oschina.net/u/1867979/blog/1557412