2023年epoll学习笔记精选.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
epoll学习笔记 epo11 有两种模式,Ed ge Triggered(简称ET) 和 Level Triggered (简称LT).在采用这两种模式时要注意的是,假如采用ET 模式,那么仅当状态发 生变化时才会告知,而采用LT 模式类似于本来的 select/poll 操作,只要尚 有没有解决的事件就会一直告知. 以代码来说明问题: 一方面给出 se r ver 的代码,需要说明的是每次accept 的连接,加入可读集的时 候采用的都是ET 模式,并且接受缓冲区是5字节的,也就是每次只接受5字节 的数据: #include iostream)#inclu de sy s/soc ket.h #include sys/epoll,h#include netinet/in.h #include arpa/inet.h#include fcntl.h #include unis t d.h#include stdio.h #i nclude errno. hmus ing namespace s td; A#define MAXLINE 5a#defi ne OPEN MAX 100 #define LISTENQ 20a#d efin e SERV PORT 5000 #defin e I NFTIM 1000 avoid setnonb1 ocking(int sock)A{A int opts; opts=fcntl(sock,F GETFL); if (opt s0) perror(fent1(sock,G ETFL)); e xit(1); }A opts = Opts|O NONBLOCK; if(fentl(so ck,F SETFL,opts)0)A{A per ror(fcnt 1(soc k,SETFL,opts));A )A in t main() int i,maxi, ssiz e tn; exi t(1); listenfd, connfd, sockfd,e pfd, nfds; ch ar line[MAXLINE]; socklen t clilen;▲ //声明epo l1event结构体的变量,e v用于注册事件,数 组用于回传要解决的事件 s truct epoll evente v,even ts[20]; //生成用于解决ac c ept的epoll专用的文献描述符 e pfd=epo 11 c rea te(256) struct sockaddr in clientaddr; s truct sockad dr in serveraddr; l is ten fd = socket(AF INET,SOCK STREAM,0); //把socket设立为非阻塞方式 //setnonblocking(listenf d);A //设立与要解决的事件相关的文献描述符 ev. data. fd=li stenfd; //设立要解决的事件类型 ev.ev ents=EPOLLIN IEPOLLE T; //ev.even t s =EPOLLIN;A //注册e poll事件 epoll ctl(epfd,EPOLL CTL ADD,listenf d,ev);A bzer o (se rver a d dr, sizeof(ser veraddr));A serverad dr.sin family = AF INET;A char *local addr=127,0.0.1;A inet a t on(loc a l add r,(se rveraddr.sin addr));//h t ons(SERVPORT); serveraddr.sin port=h t o ns(S ERV PORT);A bind(listenfd,(sockadd r*)serveraddr,sizeof(serve raddr)); listen(listen fd,LISTENQ); maxi= 0: for (;;){ //等待e po11事件的发生A

文档评论(0)

教育小专家 + 关注
实名认证
文档贡献者

本人从事教育行业11年,有丰富的教育工作经验和写作能力,欢迎大家咨询。

1亿VIP精品文档

相关文档