由epoll返回的事件可以有EPOLLIN,EPOLLOUT,EPOLLRDHUP,EPOLLPRI,EPOLLERR,EPOLLHUP。
关于EPOLLIN,EPOLLOUT,EPOLLPRI相信大家都熟悉,EPOLLIN代表有数据可读,EPOLLOUT代表可写,EPOLLPRI代表有带外数据可读。
接下来让我们关注一下EPOLLRDHUP,EPOLLERR,EPOLLHUP事件什么时候会发生呢:
EPOLLRDHUP:对端正常关闭的时候会触发该事件以及EPOLL_IN事件
EPOLLHUP:对端发来RST会触发该事件和EPOLL_ERR事件以及EPOLLRDHUP,EPOLLIN, EPOLLOUT
EPOLLERR:目前测试的收到RST会触发该事件(超时事件不知道会不会触发,没测试,麻烦有测试过的交流下,谢谢了)
下面是测试代码:
服务器端:如果想要测试自己想测试的时间,改一下ev.events就可以了
#include<sys/types.h>
#include<sys/socket.h>
#include<stdio.h>
#include<string.h>
#include<arpa/inet.h>
#include<errno.h>
#include<unistd.h>
#include <sys/epoll.h>
#include<fcntl.h>
#include<sys/epoll.h>
#include<assert.h>
int createSocket(sa_family_t family){
int fd = s