zoukankan      html  css  js  c++  java
  • DelphiIOCP API代码的封装和流程分析

    经过一段时间的研究和学习,对IOCP的原理和流程都有了一定的了解,测试的Demo结果显示在局域网内轻轻松松处理5000个左右的连接,还是比较稳定的。运行Echo测试几个小时后。服务端内存稳定在60M左右。

    这两天对原始代码进行了封装,封装成了一套IOCP类。

    原始的API调用,对于研究和学习IOCP的原理还是比较好的。封装后,如果没有较好的文档,可能比较难理解。

    1.发送数据流程图

    image

    2.服务回写数据流程

    image

    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进行注册编码器

    image

  • 相关阅读:
    cors解决跨域
    神经网络和keras
    tensorflow笔记
    5.聚类算法-kmeans
    4.回归类算法-目标值连续型
    3.分类算法-目标值离散型
    Phaser.js开发小游戏之洋葱头摘星星
    VS Code 插件之 vscode-debug-visualizer
    Phaser.js开发小游戏之Phaser.js介绍
    微信小程序中写threejs系列之 threejs-miniprogram
  • 原文地址:https://www.cnblogs.com/DKSoft/p/3047366.html
Copyright © 2011-2022 走看看