协议

客户端与服务器交互通信,发送的都是网络数据包,也就是2进制数据。

为了能够理解这些数据包的内容含义,双方需要约定好 数据的格式、一些数字代号以及含义。

这个过程就叫定义协议

消息封装与解析

按某协议定义,把数据拼凑成一块2进制数据的过程,就是消息封装。

把一块2进制数据,按某协议定义,依次提取数据的过程,就是消息解析。

Protobuf

Protobuf 定义了一套制定协议的规范。

Protobuf 提供了绝大多数语言的消息封装与解析的接口

Protobuf基础知识

github地址:https://github.com/google/protobuf

官方向导:https://developers.google.com/protocol-buffers/docs/tutorials (需要翻墙)

其他:度娘

请自行学习Protobuf相关的知识

项目中Protobuf相关目录文件

  • mope\server\proto目录

    里面包含了 mope 游戏的proto协议定义

  • mope\server\proto\wilds.proto

    与RoomServer相关的协议都定义在wilds.proto中

  • mope\server\src\usercmd

    protoc根据.proto文件,生成的go代码,在这个目录下

  • mope\server\tools\py_guiclient\proto

    protoc根据.proto文件,生成的Python代码,在这个目录下

项目中使用Protobuf流程

  1. 在某.proto文件中,删除、修改或新增了某个协议

  2. 点击 gogoproto.bat,会生成对应的Go文件到mope\server\src\usercmd下

  3. 点击 proto_to_python.bat,会生成对应的Python文件到mope\server\tools\py_guiclient\proto下

  4. Go代码中通过 import usercmd,然后使用某个协议类

  5. Python代码中通过 import proto.wilds_pb2(举例),然后使用某个协议类

项目中新建、删除.proto文件流程

  1. 删除或新增某个.proto 文件

  2. 对应修改 gogoproto.bat 文件

  3. 对应修改 proto_to_python.bat 文件

results matching ""

    No results matching ""