EPOLL网络编程

本文详细解释了EPOLL模型的两种工作方式(ET和LT),列举了EPOLL中的关键事件类型,如可读、可写、挂起等,并介绍了epoll_create、epoll_ctl和epoll_wait等核心API的用法。
摘要由CSDN通过智能技术生成

概念

EPOLL模型有两种方式:

        ET:边缘出发,事件只触发一次

        LT:水平触发,只有可操作数据,就会一直触发

EPOLL里的几个事件:

        EPOLLIN:可读事件,表示套接字上有数据到来,可以读取。或者如果读出来的数据长度是0,表示对端关闭了连接。

        EPOLLOUT:可写事件,表示套接字的写缓冲区有空间可写,可以写输入待发送数据。如果写出错,一般是指对端异常关闭了连接,此时可以关闭本地的套接字。

        EPOLLHUP:对端关闭了连接,在某些系统上可能不触发。

        EPOLLRDHUP:对端关闭了读管道,某些系统上可能不触发。

        EPOLLERR:套接字出现异常,需要关闭连接。

枚举和宏

EPOLLET = 1u << 31 : ET模式的定义,没找到LT的定义,默认是LT,只有要使用ET模式才用到此枚举。

 /* Valid opcodes ( "op" parameter ) to issue to epoll_ctl().  */

#define EPOLL_CTL_ADD 1 /* Add a file descriptor to the interface.  */

#define EPOLL_CTL_DEL 2 /* Remove a file descriptor from the interface.  */

#define EPOLL_CTL_MOD 3 /* Change file descriptor epoll_event structure.  */

API

int epoll_create (int __size): 创建一个epoll对象,最多处理size个套接字,旧系统需要,2.6之后此参数无意义。

int epoll_ctl (int __epfd, int __op, int __fd,struct epoll_event *__event) : 把一个fd关注的事件绑定到epfd,op指EPOLL_CTL_*

int epoll_wait (int __epfd, struct epoll_event *__events,int __maxevents, int __timeout):等待epfd对象关联的套接字产生网络事件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值