自定义协议的编码解码
2015.4.1 wqchen.
转载请注明出处 http://www.cnblogs.com/wqchen/p/4385798.html
本文介绍的是一个自定义协议的编码解码工具的实现。
游戏开发中,前端后端协议一般都会协商定制通信协议的格式,统一格式后用程序脚本对应前端和后端的编程语言,分别生成一份协议的编码和解码方案,便于协议的一致性。
这样的工具有很多,比较出名的是google的protobuf,它可以支持很多种编程语言。我也曾试用过protobuf,看过一点它的实现,protobuf完全可以满足游戏开发中的协议需求,但是看起来比较复杂。于是我根据普遍性的需求写了个这样的工具,只是目前只适用于golang :P
看个例子,
roleInfo { id:uint64, name:string, age:uint8 lv:uint16,money:float32, exp:uint32,soul:float64, unarray:[uint8], skill:[string], } roleInfoList { therole:roleInfo roleList:[roleInfo] }
这是前后端自定义的协议模板,roleInfo 是协议结构名字,它的members只要支持build-in类型协议字段以及它们的数组嵌套就可以了;然后还需要支持协议里嵌套其他协议的,例如roleInfoList。
具体的模板文本解析,以及怎样自动生成编码/解码的函数调用,请看这里的github链接 ,欢迎拍砖 :)