Linux epoll 使用过程中的疑问,请专家给予指点一下-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

Linux epoll 使用过程中的疑问,请专家给予指点一下

2016-06-03 00:10:34 1809 1
else if(events[i].events&EPOLLIN)//如果是已经连接的用户,并且收到数据,那么进行读入。
        {
            cout << "EPOLLIN" << endl;
            if ( (sockfd = events[i].data.fd) < 0)
                continue;
            if ( (n = read(sockfd, line, MAXLINE)) < 0) {
                if (errno == ECONNRESET) {
                    close(sockfd);
                    events[i].data.fd = -1;
                } else
                    std::cout<<"readline error"<<std::endl;
            } else if (n == 0) {
                close(sockfd);
                events[i].data.fd = -1;
            }
            line[n] = '/0';
            cout << "read " << line << endl;
            //设置用于写操作的文件描述符

            ev.data.fd=sockfd;
            //设置用于注测的写操作事件

            ev.events=EPOLLOUT|EPOLLET;
            //修改sockfd上要处理的事件为EPOLLOUT

            epoll_ctl(epfd,EPOLL_CTL_MOD,sockfd,&ev);

        }
        else if(events[i].events&EPOLLOUT) // 如果有数据发送

        {
            sockfd = events[i].data.fd;
            write(sockfd, line, n);
            //设置用于读操作的文件描述符

            ev.data.fd=sockfd;
            //设置用于注测的读操作事件

            ev.events=EPOLLIN|EPOLLET;
            //修改sockfd上要处理的事件为EPOLIN

            epoll_ctl(epfd,EPOLL_CTL_MOD,sockfd,&ev);
        }

在这段程序中,接收过一次消息后,就将套接字描述符的事件模式设置为EPOLLOUT,为什么要这么做呢,我如果不需要写数据呢!
请大神指点一下吧,非常感谢!

取消 提交回答
全部回答(1)
  • 云栖技术
    2019-07-17 19:25:42

    这位位置的作用就是说明对此事件的具体的方向,你有事件刚刚接收进来,当然要设置成EPOLLIN,相反的,你马上要使用套接字往外发数据,那就设置成EPOLLOUT 啊 ,其实EPOLL很好用的,没什么意思,

    0 0
相关问答

30

回答

云计算之路:为什么要选择云计算

cnblogs 2013-03-27 10:22:27 144360浏览量 回答数 30

170

回答

惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)

豆妹 2014-10-29 17:52:21 231865浏览量 回答数 170

145

回答

【新手入门】云服务器linux使用手册

fanyue88888 2012-11-26 17:14:18 159306浏览量 回答数 145

23

回答

阿里云开放端口权限

xcxx 2016-07-20 15:03:33 657257浏览量 回答数 23

39

回答

安全组详解,新手必看教程

我的中国 2017-11-30 15:23:46 262731浏览量 回答数 39

295

回答

Linux Bash严重漏洞修复紧急通知(已全部给出最终修复方案)

qilu 2014-09-25 13:26:50 437525浏览量 回答数 295

251

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 309142浏览量 回答数 251

97

回答

Redhat/CentOS一键安装web环境全攻略

xiaofanqie 2011-08-11 14:51:38 124686浏览量 回答数 97

40

回答

阿里云ecs从购买到环境搭建和建站!!(phpstudy一件包)

梦丫头 2014-07-29 20:51:49 163622浏览量 回答数 40

24

回答

【精品问答】python技术1000问(1)

问问小秘 2019-11-15 13:25:00 482793浏览量 回答数 24
+关注
云栖技术
社区爱好者,专为云栖社区服务!
34
文章
897
问答
问答排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载