您的位置:首页 > 理论基础 > 计算机网络

项目后期Lua接入笔记05--网络协议protobuf在lua中的使用pbc

2017-03-29 19:57 501 查看
作为一个网络游戏,不可避免的要和服务端进行数据交互,在数据结构上protobuf是一个不错的方案,在lua中使用protobuf有多种方案可供选择,这里使用的是云风的pbc.

先去这个网址下载生成工具http://repo1.maven.org/maven2/com/google/protobuf/protoc/,我这边下载的2.5版本。将protoc.exe放到指定的地方,然后将proto文件拷贝过来,为了游戏中更好的工具话,这里将protoc放到了工程lua目录下,然后建立文件夹,将proto文件放到文件夹内,然后启动cmd执行protoc.exe –descriptor_set_out=./../Game.pb ./*.proto。

cmd测试ok的话我们可以新建bat文件,一键处理,这里将所有协议一起打包了,也可以分文件打包。

cd %~dp0

cd proto

xcopy E:\*.proto %cd% /Y

..\protoc.exe   --descriptor_set_out=./../Game.pb ./*.proto


这里修改下copy的目录,把所有proto文件都拷贝过来,如果想将这个命令作为unity的菜单里,可以参考我以前的文章

lua中使用如下,首先读取文件并注册

local path = LuaConst.luaDir.."/3rd/pblua/Game.pb";--注意路径

local addr = io.open(path, "rb")
local buffer = addr:read "*a"
addr:close()
protobuf.register(buffer)


消息序列化并发送给服务端

local addressbook = {
name = "Alice",
id = 12345,
phone = {
{ number = "1301234567" },
{ number = "87654321", type = "WORK" },
}
}
local code = protobuf.encode("tutorial.Person", addressbook);
--向服务端发送消息


接收服务端的消息并反序列化

local decode = protobuf.decode("tutorial.Person" , data)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lua 协议 pbc 后期 unity