/**取得当前毫秒数*/
long now()
{
struct timeval t;
gettimeofday(&t, NULL);
return t.tv_sec * 1000 + t.tv_usec / 1000;
}
/**将一个文件描述符添加到epoll监听, common:是否为客户端连接(相对于监听sock)*/
void add_fd(int fd, boolean common)
{
if(common)
{
int idx;
//查找可用的位置(NULL)
for(idx = 0; idx < MAX_CLIENT && clients[idx] != NULL; idx++);
if(idx == MAX_CLIENT)
{
fprintf(stderr, "max client\n");
close(fd);
return;
}
client_data *client = malloc(sizeof(client_data));
bzero(client, sizeof(client_data));
client->fd = fd;
client->last = now(); //最后一次访问时间
clients[fds[fd] = idx] = client; //做好对应
}
struct epoll_event e;
e.data.fd = fd;
e.events = EPOLLIN | EPOLLET;
fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | O_NONBLOCK);
epoll_ctl(epollfd, EPOLL_CTL_ADD, fd, &e);
}
分享到:
相关推荐
《Lua游戏服务器框架开源源码——crossover深度解析》 Lua,这门轻量级的脚本语言,因其简洁高效、易于嵌入的特点,在游戏开发领域尤其是服务器端得到了广泛应用。crossover,作为一款基于Lua的游戏服务器框架,为...
**二、Lua** Lua是一种轻量级的脚本语言,语法简洁,易于学习和嵌入其他系统。其主要特点是运行速度快、内存占用小,适合于嵌入式系统和游戏开发。在Nginx中,Lua被用来扩展Nginx的功能,实现更复杂的业务逻辑,...
cpp-silly是一个基于Lua的轻量级服务器框架,它的设计目标是为开发者提供一个易于使用且性能优秀的服务器程序开发平台。这个框架的核心特点是利用了Lua的脚本语言特性,允许开发者快速编写业务逻辑,同时结合C/C++的...
`silly`不仅提供了WebSocket服务器的实现,还支持创建WebSocket客户端,这使得实时交互应用如在线游戏、聊天室等开发变得简单。 5. **Epoll与Kevent**: 对于高并发场景,`silly`利用了Linux内核的Epoll(Event ...
《基于Lua的分布式游戏服务器引擎框架——Quanta Master深度解析》 在当今的网络游戏领域,高效、稳定且可扩展的游戏服务器引擎是至关重要的。Quanta Master,作为一个基于Lua的分布式游戏服务器引擎框架,为游戏...
rAthena是一款开源、跨平台的MMORPG(大型多人在线角色扮演游戏)服务器,它为开发者提供了构建和维护网络游戏的强大框架。这款服务器软件以其高度可定制性、灵活性和稳定性而受到社区的广泛欢迎。rAthena基于C++...
epoll原理与实战.pptx Lua分享.pptx Mastering Nginx - PP 2013.pdf MongoDB权威指南.pdf nginx.conf nginx共享内存.doc nginx核心讲解.pdf Nginx高性能Web服务器详解.pdf NGINX高性能WEB服务器详解_PDF电子书下载 ...
它展示了如何利用现代操作系统提供的工具(如epoll)和脚本语言(如Lua)来构建一个高效且可定制的服务端解决方案。开发者可以通过阅读和分析源代码来学习多线程编程、I/O多路复用、以及C与Lua之间的接口设计等高级...
在描述中提到了多种架构和组件,例如脚本语言如Lua和Python,它们在服务器开发中常用于编写灵活和高效的控制逻辑。ACE的mpc和Gnu autoconf则用于自动化构建和配置工程文件。内核应用如Tux和LVS用于负载均衡,...
- **网络依赖性低**:Nginx可以实现简单的负载均衡策略,只需要能够与目标服务器通信即可。 - **内置服务器检测**:Nginx能够自动检测后端服务器的健康状况,如果检测到某个服务器出现故障,则可以将请求重定向到...
这些脚本可能用各种编程语言编写,如Lua、Python或C#,并由游戏引擎支持。 2. **网络体系结构**:网络游戏的网络体系结构设计是确保多玩家同步、低延迟通信的关键。常见的架构有客户端-服务器(Client-Server)、...
Tengine基于Nginx的事件驱动模型构建,这种模型采用非阻塞I/O多路复用技术,如epoll(Linux系统)或kqueue(FreeBSD系统)。这种架构使得Nginx能够处理大量并发连接,具有很高的性能和低资源消耗。Tengine继承了这...
《高级服务器设计和实现:架构、手段与工具箱》 在构建高效、稳定的高级服务器时,我们需要深入了解服务器架构、采用适当的手段和工具。本资料详尽地探讨了这一主题,旨在提供一个全面的指南,帮助IT专业人员优化...
lua脚本在服务器端执行,减少了网络往返,提高了性能。 二、客户端库的优化 1. **Jedis(Java客户端)**:Jedis在2.8之后的版本中,对上述新特性进行了全面支持,包括连接池、多路复用和lua脚本。此外,它还提供了...
* 第三方模块:第三方模块是为了扩展 Nginx 服务器应用,完成开发者自定义功能,如:Json 支持、Lua 支持等。 Nginx 多进程模型 Nginx 的多进程模型是指服务器每当收到一个客户端时,就有服务器主进程(master ...
1. 减少网络通信:Lua脚本可以一次性发送并执行多个命令,减少客户端与服务器间的网络交互。 2. 原子性:整个脚本作为一个原子操作执行,避免竞态条件。 3. 可复用性:客户端发送的脚本会被Redis保存,其他客户端...
- lua-seri.c, lua-seri.h: 类json的二进制形式的存储。 - lua-memory.c: 内存分配的封装。 - lua-profile.c: 性能分析接口。 - lua-netpack.c, lua-socket.c: 网络封包和socket接口封装。 - lua-clientsocket....
Nginx采用非阻塞的事件处理机制,如epoll,能有效处理大量并发请求,减少对系统资源的需求。由于它不处理动态内容,而是将这些任务转发给其他服务器,如Apache,因此在处理静态内容时表现卓越。 【Tengine】Tengine...
`lua_need_request_body`、`lua_shared_dict`和`lua_package_path`等配置展示了如何集成Lua脚本以实现自定义的防火墙功能。 `server_names_hash_bucket_size`用于设置服务器名称哈希表的大小,以适应大量的服务器...
《深入理解Nginx模块开发与架构解析》第二版的出版,为Linux和Unix系统开发者提供了一部深入探索Nginx服务器核心功能和扩展开发能力的权威指南。 Nginx(发音为“engine x”)是一款轻量级的Web服务器,同时也是一...