- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
服务器中采用的epoll技术的完整例子
?服务器中采用的epoll技术的完整例子(附加一个客户端的例子)
/*
*\ 服务器端的源代码
*/
#include netinet/in.h#include sys/types.h#include sys/socket.h#include fcntl.h#include iostream#include signal.h#include sys/epoll.h#define MAXFDS 256#define EVENTS 100#define PORT 8888int epfd;bool setNonBlock(int fd){????int flags = fcntl(fd, F_GETFL, 0);????flags |= O_NONBLOCK;????if(-1 == fcntl(fd, F_SETFL, flags))????????return false;????return true;}int main(int argc, char* argv[], char* evp[]){????int fd, nfds, confd;????int on = 1;????char* buffer[512];????struct sockaddr_in saddr, caddr;????struct epoll_event ev, events[EVENTS];????if(-1 == socket(AF_INET, SOCKSTREAM), 0)????{????????std::cout 创建套接字出错啦 std::endl;????????return -1;????}????struct sigaction sig;????sigemptyset(sig.sa_mask);????sig_handler = SIG_IGN;????sigaction(SIGPIPE, sig, NULL);????epfd = epoll_create(MAXFDS);????setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, on, sizeof(on));????????memset(saddr, 0, sizeof(saddr));????saddr.sin_family = AF_INET;????saddr.sin_port = htons((short)(PORT));????saddr.sin_addr.s_addr = INADDR_ANY;????if(-1 == bind(fd, (struct sockaddr*)saddr, sizeof(saddr)))????{????????std::cout 套接字不能绑定到服务器上 std::endl;????????return -1;????}????if(-1 == listen(fd, 32))????{????????std::cout 监听套接字的时候出错了 std::endl;????????return -1;????}????ev.data.fd = fd;????ev.events = EPOLLIN;????epoll_ctl(epfd, EPOLL_CTL_ADD, fd, ev);????while(true)????{????????nfds = epoll_wait(epfd, events, MAXFDS, 0);????????for(int i=0; i nfds; ++ i)????????{????????????if(fd == events[i].data.fd)????????????{????????????????memset(caddr, sizeof(caddr));????????????????cfd = accept(fd, (struct sockaddr*)caddr, sizeof(caddr));????????????????if(-1 == cfd)????????????????{????????????????????std::cout 服务器接收套接字的时候出问题了 std::endl;????????????????????break;????????????????}????????????????setNonBlock(cfd);????????????????ev.data.fd = cfd;????????????????ev.events = EPOLLIN
您可能关注的文档
- 四年级下册语文园地5(人教版).ppt
- JavaScript第9章 控制你的表单.ppt
- 022 TCPIP协议栈.ppt
- SimpleScalar整体工作简介.ppt
- 旧金山San Francisco Duty Report.ppt
- 操作系统ch4.8实例研究Linux虚存管理.ppt
- english-speaking countries intro母语为英语国家简介.ppt
- UNIT 4六年级I know this city.的课件.ppt
- 四季童话 课件ppt(s版语文四上).ppt
- 4-新人市场开拓沟通(10区曾庆明).ppt
- 2025福建德化陶瓷产业创新发展研究院招聘笔试历年参考题库附带答案详解.docx
- 2025河南潢川县第三水厂操作工笔试笔试历年参考题库附带答案详解.docx
- 2025山东桓台县金海公有资产经营有限公司面向社会招聘考试有关笔试历年参考题库附带答案详解.docx
- 2025山东济南产业发展投资集团有限公司社会招聘10人笔试历年参考题库附带答案详解.docx
- 会昌县独好文化发展有限责任公司招聘笔试历年参考题库附带答案详解.docx
- 2025山东东明县县内部分企业高层次人才38人笔试历年参考题库附带答案详解.docx
- 2025浙江台州市国有资产投资集团有限公司招聘3人笔试历年参考题库附带答案详解.docx
- 央企中国绿发投资集团有限公司招聘笔试历年参考题库附带答案详解.docx
- 2025山东青岛国信发展(集团)校园招聘笔试历年参考题库附带答案详解.docx
- 2025上海新松江置业(集团)有限公司招聘7人笔试历年参考题库附带答案详解.docx
文档评论(0)