版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gsm958708323/article/details/80330027
ProtoBuf使用
Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。
或许您和我一样,在第一次看完这些介绍后还是不明白 Protobuf 究竟是什么,那么我想一个简单的例子应该比较有助于理解它。
- 书写 .proto 文件
首先我们需要编写一个 proto 文件,定义我们程序中需要处理的结构化数据,在 protobuf 的术语中,结构化数据被称为 Message。proto 文件非常类似 java 或者 C 语言的数据定义。代码清单 1 显示了例子应用中的 proto 文件内容。
package lm;
message helloworld
{
required int32 id = 1; // ID
required string str = 2; // str
optional int32 opt = 3; //optional field
}
在上例中,package 名字叫做 lm,定义了一个消息 helloworld,该消息有三个成员,类型为 int32 的 id,另一个为类型为 string 的成员 str。opt 是一个可选的成员,即消息中可以不包含该成员。
- 编译 .proto 文件
编译proto文件,使用的批处理命令
@echo off
set tool=..\3Party\protobuf-net\net
//使用的工具所在路径
rem Support
set proto=begingame.proto //处理的文件
%tool%\protogen.exe -i:%proto% -o:%proto%.cs -q //输出的文件名字
pause
网络架构
- Queue 先进先出
- 消息类型
- 消息包的读取和写入
- NetGame发送网络消息
- NetworkManager读取消息