网络通信 --> epoll用法】的更多相关文章

epoll用法 在linux的网络编程中,很长的时间都在使用select来做事件触发.在linux新的内核中,有了一种替换它的机制,就是epoll. epoll函数 1. 创建epoll的句柄 size表示此内核监听的数目一共有多大,当创建好epoll句柄后,它就是会占用一个fd值,在linux下如果查看/proc/进程id/fd/,是能够看到这个fd的,所以在使用完epoll后,必须调用close()关闭,否则可能导致fd被耗尽. int epoll_create(int size); 2.…
http://blog.csdn.net/sunboy_2050/article/details/6126712 select用法 #include <sys/time.h>       #include <sys/types.h>       #include <unistd.h> #include <sys/select.h> int select(int n, fd_set *readfds, fd_set *writefds, fd_set *exc…
l  epoll是什么? epoll是当前在Linux下开发大规模并发网络程序的热门人选,epoll 在Linux2.6内核中正式引入,和select相似,都是I/O多路复用(IO multiplexing)技术. Linux下设计并发网络程序,常用的模型有: Apache模型(Process Per Connection,简称PPC) TPC(Thread PerConnection)模型 select模型和poll模型. epoll模型 l  常用模型的缺点 n  PPC/TPC模型 这两种…
我们先从著名的C10K问题开始探讨,由于早期在网络还不普及的时候,互联网的用户并不是很多,一台服务器同时在线100个用户估计在当时已经算是大型应用了.但是随着互联网的发展,用户群体迅速的扩大,每一个用户都必须与服务器保持TCP连接才能进行实时的数据交互.Facebook这样的网站同一时间的并发TCP连接可能会过亿.这时候问题就来了. 解决这种问题的思路主要有两个:一个是对于每一个连接处理分配一个独立的进程或线程:另一种就是用同一进程或线程来同时处理若干个连接. 第一种解决方案,即来一个TCP链接…
select()用法 头文件 #include <sys/time.h> #include <sys/types.h> #include <unistd.h> 定义函数 select()用来等待文件描述词状态的改变. int select(int n, fd_set * readfds, fd_set * writefds, fd_set * exceptfds, struct timeval * timeout); n:代表最大的文件描述词加1: readfds.wr…
epoll 是 linux 特有的 I/O 复用函数.它是把用户关心的文件描述符事件放在内核的一个事件列表中,故而,无须像select和poll一样每次调用都重复传入文件描述符或事件集.但是, epoll 需要一个额外的文件描述符,来唯一标识内核中的这个事件表.这个文件描述符由 epoll_create 函数来创建: #include <sys/epoll.h> int epoll_create(int size); size 参数现在是被忽略的,但是,为了兼容性,需要传入一个大于0的数. e…
epoll发展进程 此处添加一下select.poll历程及其优缺点 原理 使用步骤 Create an epoll object--创建1个epoll对象 Tell the epoll object to monitor specific events on specific sockets--告诉epoll对象,在指定的socket上监听指定的事件 Ask the epoll object which sockets may have had the specified event sinc…
aeEventLoop初始化 在server.c文件的initServer函数中,对aeEventLoop进行了初始化: 调用aeCreateEventLoop函数创建aeEventLoop结构体,对aeEventLoop结构体中的变量进行了初始化,之后调用了aeApiCreate函数创建epoll实例 调用aeCreateFileEvent函数向内核注册监听事件,由参数可知,注册的是对TCP文件描述符的可读事件监听,回调函数是acceptTcpHandler,当内核监听到TCP文件描述符有可读…
aeEventLoop初始化 在server.c文件的initServer函数中,对aeEventLoop进行了初始化: 调用aeCreateEventLoop函数创建aeEventLoop结构体,对aeEventLoop结构体中的变量进行了初始化,之后调用了aeApiCreate函数创建epoll实例 调用aeCreateFileEvent函数向内核注册监听事件,由参数可知,注册的是对TCP文件描述符的可读事件监听,回调函数是acceptTcpHandler,当内核监听到TCP文件描述符有可读…
epoll用法回顾 先简单回顾下如何使用C库封装的3个epoll相关的系统调用.更详细的用法参见http://www.cnblogs.com/apprentice89/archive/2013/05/06/3063039.html int epoll_create(int size); int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event); int epoll_wait(int epfd, struct epoll_…