自定义协议的编码解码

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链接 ,欢迎拍砖 :)

 

posted on 2015-04-02 01:37  wqchen@  阅读(1009)  评论(0编辑  收藏  举报