• ING【转载】epoll总结系列


    epoll的总结之一基本的参数设置  

    http://fpcfjf.blog.163.com/blog/static/55469793201452095738566/?suggestedreading&wumii

    epoll的总结之四LT和ET使用EPOLLONESHOT  

    http://fpcfjf.blog.163.com/blog/static/5546979320146193451475/

    【Linux学习】epoll详解

    http://blog.csdn.net/xiajun07061225/article/details/9250579

    for( ; ; )  
       {  
           nfds = epoll_wait(epfd,events,20,500);  
           for(i=0;i<nfds;++i)  
           {  
               if(events[i].data.fd==listenfd) //有新的连接  
               {  
                   connfd = accept(listenfd,(sockaddr *)&clientaddr, &clilen); //accept这个连接  
                   ev.data.fd=connfd;  
                   ev.events=EPOLLIN|EPOLLET;  
                   epoll_ctl(epfd,EPOLL_CTL_ADD,connfd,&ev); //将新的fd添加到epoll的监听队列中  
               }  
      
               else if( events[i].events&EPOLLIN ) //接收到数据,读socket  
               {  
                   n = read(sockfd, line, MAXLINE)) < 0    //
                   ev.data.ptr = md;     //md为自定义类型,添加数据  
                   ev.events=EPOLLOUT|EPOLLET;  
                   epoll_ctl(epfd,EPOLL_CTL_MOD,sockfd,&ev);//修改标识符,等待下一个循环时发送数据,异步处理的精髓  
               }  
               else if(events[i].events&EPOLLOUT) //有数据待发送,写socket  
               {  
                   struct myepoll_data* md = (myepoll_data*)events[i].data.ptr;    //取数据  
                   sockfd = md->fd;  
                   send( sockfd, md->ptr, strlen((char*)md->ptr), 0 );        //发送数据  
                   ev.data.fd=sockfd;  
                   ev.events=EPOLLIN|EPOLLET;  
                   epoll_ctl(epfd,EPOLL_CTL_MOD,sockfd,&ev); //修改标识符,等待下一个循环时接收数据  
               }  
               else  
               {  
                   //其他的处理  
               }  
           }  
       }  
  • 相关阅读:
    hdu1421 搬寝室(dp)
    HDU 2577(DP)
    扩展欧几里德算法
    unique函数的作用
    区间更新 zoj3911
    set的应用
    vue 事件处理器
    vue Class与style绑定
    vue的计算属性
    sass入门
  • 原文地址:https://www.cnblogs.com/charlesblc/p/5918529.html
Copyright © 2020-2023  润新知