事件驱动多线程网络框架



基于事件驱动的网络框架源码 首先看一下Server类,这个类就是整个框架的核心类,在这个类中只需要 s=new Server(8883,4); s->setUserConnectionCallback(onConnect); s->setUserMessageCallBack(onMessage); s->start(); 就可以启动一个4个线程在8883端口监听的完整的网络程序,其中的两个onXXX就是网络程序需要处理的业务 Server类中包括了有一个重要的类叫做Eventlooper这个类就是对epoll的封装,要用epoll_ctl注册到epoll上的fd又被封装为Channel类,当有数据到来需要操作时,channel中的几个函数指针就指向了需要回调的函数, 这里使用了boost库的function 其中的函数定义为: typedef boost::function EventCallBack; 在epoll返回的时候Eventlooper会遍历可以操作的所有channel,并调用其成员函数handleEvent,该函数会判断events,也就是EPOLLIN EPOLLPRI等,并更具相应的需要去调用处理函数。 这里的Channel并不直接使用而是做基类存在的,更直接的操作在Acceptor和TcpConnection中,其中的 Acceptor 对应了接受连接的socketfd,而TcpConnection则封装了socket的读写操作,在Server的构造函数中会创建一个Acceptor类,真正accept成功以后又会调用到Server的OnConnection函数中,这个函数会根据每个线程的负载将客服端连接的fd注册进相应线程的epoll(当然在单线程的情况下就只有一个epoll)。最后一个作为缓冲区的类charbuff,用链表将单个7KB的缓冲区穿在一起,当数据大于7kb的时候会自动将其释放,避免内存不足,如果数据的块数多余一块那么发送数据就会调用writev。至此整个框架的流程就都已经清楚了,一个简单的实现。 在此还要感谢一下linux多线程网络服务器编程的作者陈硕,CINF的实现部分就是参考其网络框架muduo来的。













































- 1

- nevermore26142014-09-23不错的网络库,参考了muduo
- qwd1081142016-05-04不错的网络库,参考了muduo
- KingWlulu2015-04-13很好的展示了网络传输与事件之间的联系!

- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 试验一使用visio设计网页初稿(1).pptx
- 350M集群通信解决方案(1).docx
- 西门子S7-1200 PLC结合Tp900触摸屏的3轴伺服PTO控制与结构化编程实践
- 计算机四级网络工程师总结------(1).pdf
- 利用VisualBasic6-0精简版编写网页浏览器方法------(1).pdf
- 计算机操作员职业资格鉴定辅导教材Ecel应用基(1).docx
- 倍福编程概述(1).ppt
- 互联网产品运营方案 (2)(1).doc
- 青少年编程能力等级测评考生Python编程二级2复习知识点试卷试题(1).doc
- 中国工业计算机行业市场现状及竞争格局分析上市企业盈利能力较强(1).pdf
- 完整word版基于MATLAB的MIMO通信系统仿真DOC(1).doc
- 智慧树知到《Web设计与应用(昆明理工大学)》章节测试附答案(1).docx
- 部分有关通信网简介(1).ppt
- 设计模式学习及其C语言实现笔记(1).docx
- 2025年计算机科学核心概念解析(1).pdf
- 完整word版随机生成多孔介质matlab程序(1).doc


