设为首页 加入收藏

TOP

基于EPOLL写的HTTP服务器(加入了线程池)(六)
2012-08-26 14:11:58 】 浏览:11819
Tags:基于 EPOLL HTTP 服务器 加入 线程
sp;//服务处理
    int clientFd;
    sockaddr_in clientAddr;
    socklen_t clientlen;

    for(;;)
        {
     //等待epoll事件到来,最多取EVENT_ARR个事件
     int nfds=epoll_wait(epFd,evs,EVENT_ARR,-1);
     //处理事件
     for(int i=0;i<nfds;i++)
      {
      if(evs[i].data.fd==serverFd&&evs[i].events&EPOLLIN)
            {
              //如果是serverFd,表明有新连接连入
          if((clientFd=accept(serverFd,(struct sockaddr*)&clientAddr,&clientlen))<0)
                               {
             printf("ACCEPT  failed\n");
                               }
          printf("Connect from %s:%d\n",inet_ntoa(clientAddr.sin_addr),htons(clientAddr.sin_port));
        setnoblock(clientFd);
                  //注册accept()到的连接
        ev.data.fd=clientFd;
        ev.events=EPOLLIN|EPOLLET;
        epoll_ctl(epFd,EPOLL_CTL_ADD,clientFd,&ev);
            }
      else if(evs[i].events&EPOLLIN)
      {
                  //如果不是serverFd,则是client的可读
      printf("client can write!\n");
      if((clientFd=evs[i].data.fd)>0)
           {
             //查询空闲线程对

          for(j = 0; j < THREAD_MAX; j++) {
              if (0 == s_thread_para[j][0]) break;
          }
          if (j >= THREAD_MAX) {
              fprintf(stder
首页 上一页 3 4 5 6 7 下一页 尾页 6/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇 select, poll和epoll的区别 下一篇VC实现线程池

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目