Firefly通讯协议-

Firefly通信协议

一、Protocol Buffers简介

《烽烟OL》的通信协议采用的是Google 的Protocol Buffers,Protocol Buffers(以下简称PB)是一种用于序列化结构化数据的机制,可用于用于分布式应用之间的数据通信或者异构环境下的数据交换。它具有灵活、高效、自动化的特点,类似于XML,但是比XML更小巧、快捷、简单。在Google 几乎所有它内部的RPC协议和文件格式都是采用PB。

PB具有以下特点:

1)平台无关、语言无关

2)高性能 比XML块20-100倍

3)体积小 比XML小3-10倍

4)使用简单

5)兼容性好

当然,PB也有缺点,与XML相比,PB的缺点是不易读。众所周知,XML是一种自描述语言,一看就可知道其作用,见文知意。而PB序列化后是一串二进制代码,如果没有对应的协议格式(即.proto文件),想要读懂它难如登天。

二、Protocol Buffers安装
1)下载Google Protocol Buffer源码包 
下载可以到protobuf官网下载:http://code.google.com/p/protobuf/downloads/list,我下载的是Protocol Buffers 2.5.0 compiler。
2)解压压缩包 
解压压缩包后,会得到文件列表。
3)编译vs工程 
在解压后的文件夹中,打开vsprojects目录. 打开libprotobuf.vcproj(这个是vs的工程文件,打开前请确认安装了vs2005 或vs2008,vs2010等等),在打开工程中,   可能需要转换工程,直接转换就行了。
右键分别生成libprotobuf,libprotobuf-lite,libprotoc,protoc这四个工程(编译模式为Release 模式)。
4)编译完成 
编译完成后,可以在vsprojects\Release下发现3个lib和一个exe文件,他们分别是libprotobuf.lib,libprotobuf-lite.lib,libprotoc.lib和protoc.exe。
5)拷贝文件到windows目录下: 将得到的libprotobuf.lib,libprotobuf-lite.lib,libprotoc.lib和protoc.exe拷贝到系统盘的windows目录下。如果你的系统安装在C盘,那么就拷贝到c:\windows目录下 。
6)编译proto文件,生成python文件 
假设在E:\test目录下有一个名为test.proto的proto文件,那么打开CMD,输入“protoc.exe -I=e:\test --python_out=e:\test e:\test\test.proto ”就可以生成python源码文件
test_pb2.py,在需要用到的工程里import这个文件就可以直接用了。
三、Firefly中使用Protocol Buffers实例
下面是一个玩家接受任务的通讯实例,先上proto文件
1)applyQuest.proto

<ignore_js_op>

message applyQuestRequest为客户端的请求
message applyQuestResponse为服务器的回复
用上面的编译方法将applyQuest.proto编译成python源码文件applyQuest_pb2.py
2)quest.py文件,服务端处理这个请求的文件。

<ignore_js_op>

3)客户端也会有对应的proto文件,可以将服务器发回来的数据解析出来,得出此次交互的结果。

Firefly通讯协议-

时间: 2024-10-08 08:58:29

Firefly通讯协议-的相关文章

Ntrip通讯协议1.0

1 什么是Ntrip? CORS(Continuously Operating Reference Stations)就是网络基准站,通过网络收发GPS差分数据.用户访问CORS后,不用单独架设GPS基准站,即可实现GPS流动站的差分定位. 访问CORS系统,就需要网络通讯协议.NTRIP( Networked Transport of RTCM via Internet Protocol)是CORS系统的通讯协议之一. 2 系统组成 使用NTRIP通讯协议的CORS系统,其组成请参考下图 图1

信息安全系统设计基础实验五:通讯协议设计

北京电子科技学院(BESTI) 实 验 报 告 课程:信息安全系统设计基础 班级:52.53 姓名:王思亓 赵阳林 学号:20135205 20135334 成绩: 指导教师:娄嘉鹏 实验日期:2015.11.24 实验密级: 预习程度: 实验时间:15:30—18:00 仪器组次: 必修/选修:必修 实验序号: 实验名称:通讯协议设计 实验目的与要求:1.掌握在ARM开发板实现一个简单的WEB服务器的过程.2.学习在ARM开发板上的SOCKET网络编程.3.学习Linux下的signal()函

基于dubbo框架下的RPC通讯协议性能测试

一.前言 Dubbo RPC服务框架支持丰富的传输协议.序列化方式等通讯相关的配置和扩展.dubbo执行一次RPC请求的过程大致如下:消费者(Consumer)向注册中心(Registry)执行RPC请求,注册中心分配服务URL并路由到具体服务提供方(Provider),消费者和服务提供方建立网络连接,服务提供方在本地创建连接池对象并提供远程服务,对于长连接类型协议(如dubbo协议)将保持连接,减少握手认证,调用过程中可以避免频繁建立和断开连接导致的性能开销,保持长连接需要有心跳包的发送,所以

使用delphi 开发多层应用(十六)使用XMLRPC 实现basic4android 远程调用RTC服务(讲述了RTC的特点,其底层通讯协议是自己封装SOCK 库,与kbmmw 的适合场合不完全一样)

    RealThinClient (以下简称RTC) 也是一款delphi 多层开发的框架,由于其底层通讯协议是自己封装SOCK 库,抛弃了 大家诟病的indy,因此表现的非常稳定,效率也非常高,深受很多人的追捧.由于RTC 是从底层通讯做起的,因此通讯层的 功能非常强,但是在中间层数据库功能虽然有所实现,但是没有kbmmw 和RO 强,但是对于普通的远程调用做的非常优雅. 同时它重点在于使用http 协议实现功能调用,因此与kbmmw 的适合场合不完全一样. 由于RTC 可以非常快速的建立

UDP通讯协议

常见的通讯协议有udp和tcp. 先来简单了解一下这两个协议各自的特点: UDP: --将数据及源.目的封装在数据包中,不需要建立连接: --每个数据包的大小限制在64k以内: --因无连接,是不可靠协议: --不需要建立连接,所以传输速度快,但是容易丢失数据: 总之:Udp是面向无连接的通讯协议,传输数据时,不管对端服务是否启动,直接发送. 日常中使用Udp技术的软件有:飞秋.视频会议等: TCP: --建立连接,形成传输数据的通道: --在连接中进行大的数据量传输: --通过三次握手完成连接

iOS-防止通讯协议被轻易破解的方法

开发者可以选择类似Protobuf之类的二进制通讯协议或者自己实现通讯协议,对于传输的内容进行一定程度的加密,以增加黑客破解协议的难度. 参考资料: <iOS开发进阶> --唐巧 版权声明:本文为博主原创文章,未经博主允许不得转载.

通讯协议之——字节序

最近有接触通讯协议有碰到字节序,记得上学的时候有说过不过太久了不怎么记得了,现在我在这里说说字节序: 我们都知道计算机存储数据的时候都是把数据转换成字节进行存储,而日常我们的程序或存储的数据通常都是由多个字节组成的,而不同的计算机或设备存储的规则又不一致,导致我们在多计算机.设备间传输数据时就要了解设备的字节存储(字节序)规则是怎样的,这就是我们要了解字节序的原因,在做网络编程,游戏编程时这是必须清楚的知识: 比如:在我们使用的计算机编程语言中就有各种数据类型:byte,int,short,lo

四轴飞行器1.8 通讯协议拟定、协议验证与飞控输出验证

原创文章,欢迎转载,转载请出名出处. 上个周末其实通讯协议就已经拟定完成了,这一个星期主要成了通讯协议的解析,然后通过通讯协议的实现,加入遥控器的控制和飞控信息的传递,从飞控传到遥控器,再从遥控器传到电脑上,通过matlab现实姿态信息和电机输出控制信息.这章会一步一步介绍实现的过程. 1:遥控和飞控之间的通讯. 2:通讯协议的拟定. 3:通讯协议的实现与解析. 4:通过遥控控制飞控并且飞控姿态通过nrf上传数据. 先上通过遥控控制飞控并且飞控姿态通过nrf上传数据的视频哈,看看效果,解释在后面

Websocket全讲解。跨平台的通讯协议 !!基于websocket的高并发即时通讯服务器开发。

本博文,保证不用装B的话语和太多专业的语言,保证简单易懂,只要懂JAVAEE开发的人都可以看懂. 本博文发表目的是,目前网上针对Websocket的资料太散乱,导致初学者的知识体系零零散散,学习困难加大.本博加以整理,并且实践. 所用核心技术选型: Tomcat + Spring 4.0.3 + Mongodb(高并发数据库) + SpringQueue(消息队列)+ ActiveMQ (消息队列) + Spring-data-Mongo + Servlet 3.0 +Spring-Websoc