DIOCP开源项目 API代码的封装和流程分析
2013-05-31 11:35
274 查看
经过一段时间的研究和学习,对IOCP的原理和流程都有了一定的了解,测试的Demo结果显示在局域网内轻轻松松处理5000个左右的连接,还是比较稳定的。运行Echo测试几个小时后。服务端内存稳定在60M左右。
这两天对原始代码进行了封装,封装成了一套IOCP类。
原始的API调用,对于研究和学习IOCP的原理还是比较好的。封装后,如果没有较好的文档,可能比较难理解。
1.发送数据流程图
2.服务回写数据流程
2.IOCP对象中心
2.1
TIOCPObject
IOCP对象中心,创建IOCP句柄,开启侦听端口。
提供处理数据,接收套接字,投递接收请求,投递发送请求。
2.2
TIOCPClientContext
套接字扩展类
负责接收数据,
可以继承他的dataRecvied进行数据处理
可以调用他进行回写数据到客户端
2.3
TIOCPClientContextFactory
负责创建和释放套接字扩展对象<在接收客户端连接时进行使用>
负责注册编码器和解码器
负责注册套接字扩展对象类<继承TIOCPClientContext的类>
2.4
TIOCPDecoder
接收到客户端的数据后调用的解码器,将接收到的数据流,解码成对象。
可以在这里处理粘包工作。
需要向TIOCPClientContextFactory进行注册解码器
2.5
TIOCPEncoder
调用TIOCPClientcontext进行回写对象到客户端时,将回写的对象进行编码成数据流。然后交由TIOCPObject进行数据发送的投递。
需要向TIOCPClientContextFactory进行注册编码器
这两天对原始代码进行了封装,封装成了一套IOCP类。
原始的API调用,对于研究和学习IOCP的原理还是比较好的。封装后,如果没有较好的文档,可能比较难理解。
1.发送数据流程图
2.服务回写数据流程
2.IOCP对象中心
2.1
TIOCPObject
IOCP对象中心,创建IOCP句柄,开启侦听端口。
提供处理数据,接收套接字,投递接收请求,投递发送请求。
2.2
TIOCPClientContext
套接字扩展类
负责接收数据,
可以继承他的dataRecvied进行数据处理
可以调用他进行回写数据到客户端
2.3
TIOCPClientContextFactory
负责创建和释放套接字扩展对象<在接收客户端连接时进行使用>
负责注册编码器和解码器
负责注册套接字扩展对象类<继承TIOCPClientContext的类>
2.4
TIOCPDecoder
接收到客户端的数据后调用的解码器,将接收到的数据流,解码成对象。
可以在这里处理粘包工作。
需要向TIOCPClientContextFactory进行注册解码器
2.5
TIOCPEncoder
调用TIOCPClientcontext进行回写对象到客户端时,将回写的对象进行编码成数据流。然后交由TIOCPObject进行数据发送的投递。
需要向TIOCPClientContextFactory进行注册编码器
相关文章推荐
- Delphi-IOCP API代码的封装和流程分析
- 短视频 | 问答开源项目解读之整体代码流程和问题分析
- Mustache php 版开源项目 流程 性能分析 以及优化
- 对搜索引擎开源项目的代码分析——索引(1)
- 开源APP项目代码分析(4)- 天气类
- 开源项目kcws代码分析--基于深度学习的分词技术
- 开源项目kcws代码分析--基于深度学习的分词技术
- 对搜索引擎开源项目的代码分析——文档抓取
- 开源APP项目代码分析(2)- Owspace和MusicDNA
- xrdp开源项目的代码分析-1
- 开源APP项目代码分析(1)- OpenEyes、Plaid、GitHot
- 开源项目成熟度分析工具-利用github api获取代码库的信息
- DIOCP开源项目出炉,附带<IOCP退出资源的管控研究代码>
- 开源项目kcws代码分析--基于深度学习的分词技术
- Android 开源框架Universal-Image-Loader完全解析(五)- 从代码分析Android-Universal-Image-Loader的图片加载、显示流程
- lua开源测试框架busted源码学习(二)--代码框架分析和用例执行流程
- DIOCP开源项目出炉,附带<IOCP退出资源的管控研究代码>
- xrdp开源项目的代码分析
- 开源APP项目代码分析(3)- 生活记事本
- 基于.NET 2.0的GIS开源项目SharpMap分析手记(十四):ASP.NET2.0实现无刷新客户端回调的Callback机制及例子代码下载