通信协议参考

一、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

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

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

通信协议参考

时间: 2024-07-30 13:52:50

通信协议参考的相关文章

理解跨域及常用解决方案

跨域,相信大家无论是在工作中还是在面试中经常遇到这个问题,常常在网上看到别人所整理的一些方法,看似知道是怎么回事,但如果没有动手实践过,总觉得自己没有真正的掌握,在这里,通过自己认真思考整理一些常用的方法. 跨域的产生 不用多讲,作为一名前端开发人员,相信大家都知道跨域是因为浏览器的同源策略所导致的.所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源.浏览器引入同源策略主要是为了防止XSS,CSRF攻击. CSRF(Cross-site reque

通信协议------Http、TCP、UDP

CP   HTTP   UDP: 都是通信协议,也就是通信时所遵守的规则,只有双方按照这个规则“说话”,对方才能理解或为之服务. TCP   HTTP   UDP三者的关系: TCP/IP是个协议组,可分为四个层次:网络接口层.网络层.传输层和应用层.在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议.在传输层中有TCP协议与UDP协议.在应用层有FTP.HTTP.TELNET.SMTP.DNS等协议.因此,HTTP本身就是一个协议,是从Web服务器传输超文本到本地浏览器

TCP应用程序通信协议的处理

TCP应用程序通信协议的处理 flyfish 2015-6-29 一 流式处理 TCP是一种流协议(stream protocol).TCP数据是以字节流的形式传递给接收者的,没有固有的"报文"或"报文边界"或者用户可见的"分组"的概念. 它只是传送了一个字节流,我们无法准确地预测在一个特定的读操作中会返回多少字节.尽管网络层数据在节点之间是以IP分组的形式传输的,但分组中的数据量与send调用中传送给TCP多少数据并没有直接关系.而且,接收程序

了解saltstack的通信协议zeromq(二)

上文讨论了PAIR/PAIR,REQ/REP两种模式,现在看看PUB/SUB和PUSH/PULL模式. PUB/SUB:发布订阅模式,跟我们订阅新闻类似的,采用异步IO,多对多模式,如果没有订阅,服务端发送的消息直接丢弃掉. pub_server.py import zmq import random import sys import time port = "5556" if len(sys.argv) > 1:         port =  sys.argv[1]    

通信协议:HTTP、TCP、UDP

转载地址:http://blog.jobbole.com/84429/ TCP   HTTP   UDP: 都是通信协议,也就是通信时所遵守的规则,只有双方按照这个规则“说话”,对方才能理解或为之服务. TCP   HTTP   UDP三者的关系: TCP/IP是个协议组,可分为四个层次:网络接口层.网络层.传输层和应用层. 在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议. 在传输层中有TCP协议与UDP协议. 在应用层有FTP.HTTP.TELNET.SMTP.DN

通用访问 - 用“反射”来设计通用的通信协议

1. 效果演示 2. 通信协议 功能介绍 特点 TCP协议 WebApi协议 3. SDK与工具 4. 应用示例 迷你网管 通用GIS 系统管理 5. 设计初衷与演化 1. 效果演示 服务端代码 //创建服务器 var __服务端 = FT通用访问工厂.创建服务端(); __服务端.端口 = 8888; __服务端.开启(); //实际对象 var __基本状态 = new M基本状态(); __基本状态.版本 = "1.0.0.0"; __基本状态.待处理问题.Add(new M问题

常用网络通信协议全景图

很早以前收集的网络协议全景图,有两张,一张是<计算机网络设计>的附录图,2006年的,有点老了,如下图所示:另一张是科来软件网络通讯协议图2011版,这个比较全面些,pdf版的. 附上下载地址,供学习和参考: 链接:  网络通信协议图   密码: 8tqw 注:本文只作分享,同时感谢<计算机网络设计>原书作者以及科来软件公司. 常用网络通信协议全景图,布布扣,bubuko.com

发布一个参考ssdb,用go实现的类似redis的高性能nosql:ledisdb

起因 ledisdb是一个参考ssdb,采用go实现,底层基于leveldb,类似redis的高性能nosql数据库,提供了kv,list,hash以及zset数据结构的支持. 我们现在的应用极大的依赖redis,但随着我们用户量越来越大,redis的内存越来越不够用,并且replication可能还会导致超时问题.虽然后续我们可以通过添加多台机器来解决,但是在现有机器配置下面,我们仍希望单台机器承载更多的用户.另外,因为业务的特性,我们其实并不需要将所有的数据放到内存,只需要存放当前活跃用户.

atitit.恒朋无纸化彩票系统数据接入通信协议

深圳市恒朋科技开发有限公司 Shenzhen Helper Science & Technology Co., Ltd. 恒朋无纸化彩票系统数据接入通信协议 文档版本历史 内容目录 恒朋无纸化彩票系统数据接入通信协议............................................1 文档版本历史..................................................................2 内容目录..................