当前位置: 技术问答>linux和unix
epoll 处理事件 监听连接不全
来源: 互联网 发布时间:2017-03-17
本文导语: 在做一个服务端程序,要求使用epoll来处理问题,之前测试都是单个连接,没什么问题,最近在做压力测试,并发连接的话在设备少于2个的时候只能连上1个,也就是epoll_wait等待事件发生,就accpet一个新的文件描述符...
在做一个服务端程序,要求使用epoll来处理问题,之前测试都是单个连接,没什么问题,最近在做压力测试,并发连接的话在设备少于2个的时候只能连上1个,也就是epoll_wait等待事件发生,就accpet一个新的文件描述符来加入epoll生成的文件描述符集中去,多于2个的时候,每次连接的数目都比预期的要少两个,是在不明白到底是为啥啊,各位大神有没有什么办法啊?
代码:
主函数调用epoll_wait_events函数,kdpfd是epoll_create创建的文件描述符句柄,MAXEPOLLSIZE为10000,listener是主函数创建的监听句柄,监听本地端口,已设置为非阻塞,并且加入到epoll_create创建的句柄中了。
int epoll_wait_events(int kdpfd,int listener)
{
socklen_t len;
struct sockaddr_in their_addr;
struct epoll_event ev;
struct epoll_event events[MAXEPOLLSIZE];
int nfds,new_fd,n,ret;
memset(&their_addr,0,sizeof(struct sockaddr_in));
len = sizeof(struct sockaddr_in);
nfds = epoll_wait(kdpfd,events,MAXEPOLLSIZE/2,0);
if(nfds == -1){
perror("epoll_wait");
return -1;
}
for(n=0;n
代码:
主函数调用epoll_wait_events函数,kdpfd是epoll_create创建的文件描述符句柄,MAXEPOLLSIZE为10000,listener是主函数创建的监听句柄,监听本地端口,已设置为非阻塞,并且加入到epoll_create创建的句柄中了。
int epoll_wait_events(int kdpfd,int listener)
{
socklen_t len;
struct sockaddr_in their_addr;
struct epoll_event ev;
struct epoll_event events[MAXEPOLLSIZE];
int nfds,new_fd,n,ret;
memset(&their_addr,0,sizeof(struct sockaddr_in));
len = sizeof(struct sockaddr_in);
nfds = epoll_wait(kdpfd,events,MAXEPOLLSIZE/2,0);
if(nfds == -1){
perror("epoll_wait");
return -1;
}
for(n=0;n
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。