服务器与客户端建立连接需要使用到一些接口,包括但不限于socket、bind、listen、accept.高并发编程会有一些服务器模型,例如reactor或proactor。这两类都要使用到IO多路复用,O多路复用是指单个进程/线程就可以同时处理多个IO请求。有三个方式select、poll、epoll。 select:将文件描述符放入一个集合中,调用select时,将这个集合从用户空间拷贝到内核空间(缺点:每次都要复制,开销大),由内核根据就绪状态修改该集合的内容。 poll:和select几乎没有区别,区别在于文件描述符的存储方式不同,poll采用链表的方式存储,没有最大存储数量的限制; epollepoll底层通过红黑树来描述,并维护一个ready list,将事件表中已经就绪的事件添加到这里,在使用epoll_wait调用时,仅观察这个list中有没有数据即可。
2022-05-20 11:01:07 53KB 服务器 网络
1
依赖了boost 库的线程池
2022-05-19 19:01:35 8KB epollserver
1
epoll接收数据封装为接口形式供线程调用
2022-05-07 23:25:16 3KB epoll 串口 linux
1
Linux IO模型/epoll
2022-04-26 09:00:59 965KB linux 运维 服务器
1
redis封装了一个小型网络库供自己使用,这个网络库只有几百行代码,却基本实现了一个高效的异步网络事件框架,而且与其他redis模块相对独立,故我将其独立出来,方便以后复用。 与著名的libevent相比,它代码精简,只实现了最基本的功能,而且没有用上什么高深的技术,十分适合我们学习和借鉴。 以下这个程序实现了一个简单的回显服务器,并且每秒钟在控制台输出一句话。它简单地演示了redis网络模块的使用。 这个程序由6个源文件组成,ae.h, ae.c, ae_epoll.c, anet.h, anet.c, main.c组成,main.c由我原创,其他源文件来自于redis源代码(注释版,有改动)
2022-04-12 16:11:22 11KB redis network epoll linux
1
项目作者:fuyinglong 邮箱: CSDN 昵称:你喜欢梅西吗 github 主页: 项目名:chat-project-based-on-ubuntu 介绍 使用 C++实现的 ubuntu 环境下的聊天小项目,采用 C/S 架构,支持注册、登录、记录登录状态、私聊、群聊功能,前期使用多线程实现并发服务器,后期利用 epoll 监听+线程池处理的 Reactor 模式实现并发服务器,进行了压力测试,并采用 bitmap 实现的布隆过滤器减少对 MySQL 的查询。 项目中使用 TCP 网络编程实现 C/S 的信息交互,使用 Mysql 记录用户账号、密码,使用 redis 记录用户的登录状态,编写了 makefile 进行编译,使用 shell 脚本提高了开发效率,开发过程使用 git 进行版本管理,编写了说明文档。 主要功能: 1、用户注册,数据存储到服务器主机的数据库中 2、用户
2022-04-07 19:16:13 8.78MB C++
1
linux下简单的epoll模型的例子程序
2022-03-30 11:33:59 1.27MB linux epoll tcp/ip
1
C语言长连接服务器Demo,TCP SOCKET利用epoll非阻塞,大大提升效率。只是一个简单的demo。
2022-03-28 16:52:03 43KB 长连接 C语言
1
下面文章在这段时间内研究 select/poll/epoll的内核实现的一点心得体会: select,poll,epoll都是多路复用IO的函数,简单说就是在一个线程里,可以同时处理多个文件描述符的读写。 select/poll的实现很类似,epoll是从select/poll扩展而来,主要是为了解决select/poll天生的缺陷。 epoll在内核版本2.6以上才出现的新的函数,而他们在linux内核中的实现都是十分相似。 这三种函数都需要设备驱动提供poll回调函数,对于套接字而言,他们是 tcp_poll,udp_poll和datagram_poll; 对于自己开发的设备驱动而言,是自
2022-03-22 11:28:16 107KB c ec ep
1
epoll 原型展示,包括用epoll开发的客户端、服务端、代理,及用vc开发的客户端,并有相关脚本
2022-03-17 15:33:20 13KB epoll 代理 proxy
1