网络与多线程的设计例子
2015-07-16 15:47
399 查看
上一篇的《网络与多线程设计模式》讲的是一些设备上的纯理论的东西,本篇将介绍一个本人写的使用EPoll+TcpServer+多线程的开源库,已在https://bitbucket.org/johnson_he/epolltcpserver中供开源下载。
该库使用了Qt的工程方式进行封装(实在不想写configure),里面的log也使用了log4Qt的方式进行,如果不想使用Qtcreator的话,可以自行引用tcpserver文件夹里面的所有文件即可。 使用Qtcreator的好处是,里面的demo是用Qt写的,当然Qt就是C++,应该不难看懂。
该库的实质源码其实并不多,使用者只需要继承AbstractTcpHandler类来实现自己的服务功能,然后用该实例化的子类、监听端口号、线程数去初始化EpollTcpServer对象即可。 AbstractTcpHandler类的每个接口函数的功能,可看该类头文件的注释。实例化自己的功能类时,需要注意的是,当你初始化EpollTcpServer对象时指定的线程数大于1时,该类会被多个线程同时调用,所以,设计该类时,需要保证里面的资源的线程安全。 当初始化完EpollTcpServer对象后,调用其startServer()接口里,将会正式启动线程进行网络监听操作,并将监听到的Tcp连接放入epoll中做事件监听,当有事件到来时,调用你实例化的功能类进行数据的处理,如下图所示。
欢迎通过QQ:85021824进行交流。
来自为知笔记(Wiz)
该库使用了Qt的工程方式进行封装(实在不想写configure),里面的log也使用了log4Qt的方式进行,如果不想使用Qtcreator的话,可以自行引用tcpserver文件夹里面的所有文件即可。 使用Qtcreator的好处是,里面的demo是用Qt写的,当然Qt就是C++,应该不难看懂。
该库的实质源码其实并不多,使用者只需要继承AbstractTcpHandler类来实现自己的服务功能,然后用该实例化的子类、监听端口号、线程数去初始化EpollTcpServer对象即可。 AbstractTcpHandler类的每个接口函数的功能,可看该类头文件的注释。实例化自己的功能类时,需要注意的是,当你初始化EpollTcpServer对象时指定的线程数大于1时,该类会被多个线程同时调用,所以,设计该类时,需要保证里面的资源的线程安全。 当初始化完EpollTcpServer对象后,调用其startServer()接口里,将会正式启动线程进行网络监听操作,并将监听到的Tcp连接放入epoll中做事件监听,当有事件到来时,调用你实例化的功能类进行数据的处理,如下图所示。
欢迎通过QQ:85021824进行交流。
来自为知笔记(Wiz)
相关文章推荐
- 计算机网络—传输层协议之TCP
- HTTP协议的C/S模式的信息交换过程
- HTTP请求报文和HTTP响应报文
- 浏览器 HTTP 协议缓存机制详解及Http协议预处理工具类
- 网络负载介绍以及配置windows网络负载
- Android中开源网络请求框架OkHttp使用
- 云计算和大数据时代网络技术揭秘(七)大二层网络
- ios网络开发
- php curl设置自定义的HTTP头
- 说说http请求
- Netperf网络测试工具
- 利用HttpWebRequest抓取网页数据
- TCP详解(2):三次握手与四次挥手
- java通过http调用服务
- Python 标准库 BaseHTTPServer 中文翻译
- web api control注册及重写DefaultHttpControllerSelector、ApiControllerActionSelector、ApiControllerActionInvoker
- [C#HttpHelper]类1.4正式版教程与升级报告
- tinyhttpd学习笔记(二)socket相关知识
- 计算机网络—HTTP协议
- Java / Android 基于Http的多线程下载的实现