当前位置:  技术问答>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

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 使用epoll lt或者et 每次wait到一个事件处理完后是否需要重新投递事件呢?
  • 求解:EPOLL高并发下不再响应新事件
  • epoll有必要检查EPOLLOUT事件么
  • windows客户端强制结束进程, epoll_wait收不到事件通知(不能完全收到)
  • epoll 丢事件
  • epoll中epoll_event结构体的含义
  • epoll_ctl(,EPOLL_CTL_DEL,); 的问题!!!
  • 第一次用epoll就傻眼,程序报create_epoll error Function not implemented
  • 为Qt添加epoll的高性能I/O复用 qt_eventdispatcher_epoll
  • 请问: 当服务器采用epoll 时,客户端连不上,但若服务器端不用epoll时,也连上并发消息,这是为什么啊
  • epoll_ctl(epfd, EPOLL_CTL_ADD, fd, &event)为何老返回-1
  • epoll 退出
  • 关于epoll的几个疑问
  • 大家好,问个问题,关于EPOLL的。。。
  • epoll并发问题
  • 有人碰到过epoll丢信号吗
  • epoll异常问题
  • epoll可读的问题
  • python实现Linux异步epoll代码
  • epoll多路复用模型的疑惑,请高手解答
  • epoll,socket超时如何设置?
  • epoll的一个问题
  • linux并发服务器中epoll+多线程分别怎么理解?
  • 关于epoll的链接库
  • 谁能解释一下epoll、libevent、zeroMQ的区别?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3