![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux epoll lua 游戏 服务器
nkadun
这个作者很懒,什么都没留下…
展开
-
epoll + lua 简单游戏服务器(一)
边学习C语言边写个简单的游戏服务器玩。 --epoll监听读事件 --利用epoll_wait的timeout做idle处理 --数组下标索引客户端连接数据(没找到好用的hashmap库) --json作为数据交互格式 --luajson luapgsql [code="c"] /**客户端连接结构体*/ typedef struct client_data { in...2013-09-23 16:06:25 · 298 阅读 · 0 评论 -
epoll + lua 简单游戏服务器(二)
[code="c"] /**取得当前毫秒数*/ long now() { struct timeval t; gettimeofday(&t, NULL); return t.tv_sec * 1000 + t.tv_usec / 1000; } [/code] [code="c"] /**将一个文件描述符添加到epoll监听, common:是否为客户端连接(相对于...原创 2013-09-23 16:06:53 · 131 阅读 · 0 评论 -
epoll + lua 简单游戏服务器(三)
[code="c"] /**断开一个连接,移除epoll监听,通知lua*/ void remove_fd(int fd, lua_State *L) { int ret, idx; lua_State *Lx = lua_newthread(L); lua_getglobal(Lx, F_ONCLOSE); // 调用lua里的onclose函数 lua_pushinteg...原创 2013-09-23 16:07:11 · 236 阅读 · 0 评论 -
epoll + lua 简单游戏服务器(四)
[code="c"] /**处理请求数据,调用lua处理*/ void read_fd(int fd, lua_State *L) { //已超时移除 if(fds[fd] < 0) return; char buf[READ_SIZE]; int ret, idx, done; client_data *client; /...原创 2013-09-23 16:07:27 · 193 阅读 · 0 评论 -
epoll + lua 简单游戏服务器(五)
[code="c"] /**空闲处理,断开空闲的连接*/ void idle_fds(lua_State *L) { client_data *client; int i; long n; n = now(); //做fds和clients对应为了这里快一点(65535 vs 1000) for(i = 0; i < MAX_CLIENT; i++)...原创 2013-09-23 16:07:43 · 125 阅读 · 0 评论