码迷,mamicode.com
首页 > 其他好文 > 详细

页游手游服务器(一)

时间:2014-06-14 20:35:32      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:使用   数据   string   os   工作      

把工作几年服务器相关的部分内容,通过服务器解决方案,做一次总结。
整个实现的主体是lua脚本,lua实现主要缺少的两大块:
1网络部分
2数据库部分
这两部分必须通过c/c++做扩展
先来做net,主要是服务器net,和客户端net。
服务器发起连接的情况主要是用于和平台验证,上报之类的,还有服务间通信,接口如下:
_connect(ip, port, onconnect, onclose, timeout)
参数:
ip,地址
port 端口
onconnect 连接上的回调
onclose 关闭的回调
timeout 连接的客户端socket超时时间,超时会回调close
返回net对象

服务器net负责监听,收集客户端来的消息,接口如下:
_listen(ip, port, onconnect, onclose, timeout)
参数:
ip,地址
port 端口
onconnect 连接上的回调
onclose 关闭的回调
timeout 连接的客户端socket超时时间,超时会回调close
返回net对象

net对象方法:
net:receive(sep1,sep2,sep3,maxlen, onrec),设置接收条件
net:send(data)
net:close(),主动关闭连接

假定客户端和服务器的通信协议是:4字节表示长度len,后面len个字节表示真正的消息
服务器net典型使用方法
locla function onbody(net, data)
--data 是消息包,根据需要处理
net:receive(4, onhead)
end

local funciton onhead(net, data)
local len=string.from32(data)
--len是消息包的字节长度
net:receive(len, onbody)
end

local function onconnect(net, snet)
net:receive(4, onhead)
end

local function onclose(net, msg)
print("net closed", msg)
end

local snet=_listen("0.0.0.0", 80, onconnect, onclose, 60)

假定服务器给客户端发的消息包,协议如上
客户端典型使用如下:
locla function onbody(net, data)
--data 是消息包,根据需要处理
net:receive(4, onhead)
end
local function onconnect(net, snet)
net:receive(4, onhead)
end

local function onclose(net, msg)
print("net closed", msg)
end
local cnet=_connect("X.X.X.X", 8081, onconnect, onclose, 60)
net:send(#data)
net:send(data)
网络部分使用了libiop库,因为它的一些api不满足我的需求,稍作了修改,源码等哪天有空(等系列文章写完了再整理)整理下,测试通过了再上传。

net和sql都是给lua做拓展,精彩部分在lua,稍后

页游手游服务器(一),布布扣,bubuko.com

页游手游服务器(一)

标签:使用   数据   string   os   工作      

原文地址:http://www.cnblogs.com/marcher/p/luaserver.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!