|
protobuf 是google开源的一个序列化框架,是基于二进制的协议。
优点:
1:序列化和反序列化效率比xml,json要高
2:序列化后的体积要比json和xml都要小
3:支持跨平台多语言
开发游戏中如何使用:
下载地址:
https://download.csdn.net/download/zisuting/10316263
客户端与服务器交互的协议定义成.proto文件,通过protoc.exe编译后生成对应的.java文件和.cs文件。
下载好后解压目录如下
如何写proto文件
如上图我们定义了一个登陆请求协议
用到的关键字有 package, option, message, optional, int32, int64, string
支持的关键字类型如下:
如何将写好的proto生成对应的java代码:
上图是文件目录,protos存放写好的.proto文件。Tools是解压好的protobuf编译文件,build-java.bat是批处理的编译脚本内容如下:
运行这段批处理脚本会将protos目录下及其子目录的.proto文件生成对应的java文件到out目录下
在游戏服务器开发中,我们如何定义协议:
第一部分:我们在一个包的头部定义一个int型或者short类型的(取决于协议的数据量大小)包头用于表示包体的大小;
第二部分:协议号int类型或者short类型(取决于协议数量的多少)的协议号用于判断该包属于哪条协议是登陆协议还是抽奖协议等用于解包的判断;
第三部分:对应的protobuf里定义的数据。
Java的netty服务器对应的解码器部分:
修改netty部分:
将socket管道绑定对应的解码器
总结:
游戏服务器开发部分对于协议部分的讲解基本上就这些内容,但难免会有纰漏,望指正。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|