当前位置:  技术问答>linux和unix

对于epoll的疑惑,请高手帮忙解释一下

    来源: 互联网  发布时间:2017-01-24

    本文导语:  在学linux下的网络编程,现在看到epoll这一块,对EPOLLIN 和EPOLLOUT 这里有一点疑惑。从网上找到的代码如下,问题在代码后面 int main() {     int i, maxi, listenfd, connfd, sockfd,epfd,nfds;     ssize_t n;     char line[M...

在学linux下的网络编程,现在看到epoll这一块,对EPOLLIN 和EPOLLOUT 这里有一点疑惑。从网上找到的代码如下,问题在代码后面
int main()

{

    int i, maxi, listenfd, connfd, sockfd,epfd,nfds;

    ssize_t n;

    char line[MAXLINE];

    socklen_t clilen;

    //声明epoll_event结构体的变量,ev用于注册事件,数组用于回传要处理的事件

    struct epoll_event ev,events[20];

    //生成用于处理accept的epoll专用的文件描述符

    epfd=epoll_create(256);

    struct sockaddr_in clientaddr;

    struct sockaddr_in serveraddr;



    listenfd = socket(AF_INET, SOCK_STREAM, 0);

    //把socket设置为非阻塞方式

    setnonblocking(listenfd);

    //设置与要处理的事件相关的文件描述符

    ev.data.fd=listenfd;

    //设置要处理的事件类型

    ev.events=EPOLLIN|EPOLLET;

    //ev.events=EPOLLIN;

    //注册epoll事件

    epoll_ctl(epfd,EPOLL_CTL_ADD,listenfd,&ev);

    bzero(&serveraddr, sizeof(serveraddr));

    serveraddr.sin_family = AF_INET;

    char *local_addr="0.0.0.0";

    inet_aton(local_addr,&(serveraddr.sin_addr));//htons(SERV_PORT);

    serveraddr.sin_port=htons(SERV_PORT);

    bind(listenfd,(sockaddr *)&serveraddr, sizeof(serveraddr));

    listen(listenfd, LISTENQ);

    maxi = 0;

    for ( ; ; ) {

        static int last_fd = 0;

        char empty[10240];

        send(last_fd, empty, sizeof(empty), MSG_DONTWAIT);

        //等待epoll事件的发生

        nfds=epoll_wait(epfd,events,20,500);

        //处理所发生的所有事件

        for(i=0;i

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












  • 相关文章推荐
  • Epoll的程序设计问题,尽量讲清晰点,大家帮忙解答,谢谢.
  • 一个关于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模型如何限制最大连接数
  • epoll可读的问题
  • python实现Linux异步epoll代码
  • epoll,socket超时如何设置?
  • epoll的一个问题
  • linux并发服务器中epoll+多线程分别怎么理解?
  • 关于epoll的链接库
  • epoll 丢事件


  • 站内导航:


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

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

    浙ICP备11055608号-3