• 通信协议参考


    一、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)编译完成 
    编译完成后,可以在vsprojectsRelease下发现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: est目录下有一个名为test.proto的proto文件,那么打开CMD,输入“protoc.exe -I=e: est --python_out=e: est e: est est.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文件,可以将服务器发回来的数据解析出来,得出此次交互的结果。

  • 相关阅读:
    excel读取表,并将结果保存为键值对的字典列表;
    [置顶] MQ选型对比RabbitMQ RocketMQ ActiveMQ Kafka
    ActiveMQ持久化消息的三种方式
    getConstructor、getDeclaredConstructor区别
    JavaEE 保存文件获取绝对路径getResource("")和servletContext.getRealPath("/")
    Java中getResourceAsStream的用法
    Java 输出流中的flush方法
    Java之关闭流
    Java中的字节流、缓冲流
    java原生序列化和Kryo序列化性能比较
  • 原文地址:https://www.cnblogs.com/123ing/p/3902717.html
Copyright © 2020-2023  润新知