zoukankan      html  css  js  c++  java
  • DIOCP3

    DIOCP3支持两种方式接收数据,

     

    第一种是原始的流数据, 最通用的一种方式,客户端发啥,这边就收到啥。需要自己处理粘包问题。

    可以在TCilentContext或者TIocpTcpServer的OnRecvBuffer中处理, 如果Errcode = 0可以进行收到数据的处理

    下面这两个都会触发

    TIocpClientContext

    procedure OnRecvBuffer(buf: Pointer; len: Cardinal; ErrCode: WORD); override;

     

    TIocpTcpServer

    property OnDataReceived: TOnDataReceived read FOnDataReceived write
            FOnDataReceived;

     

    第二种是编码器和解码器的方式。该方式进行了一次封装,在OnRecvBuffer中后,会对数据进行缓存存放,然后调用解码器进行解码数据, 如果解码成功会用IocpTask/或者QWokers把数据对象投递到逻辑线程进行处理<常说的通信线程和工作线程分离的模式>。

     

    TIOCPCoderClientContext

    procedure dataReceived(const pvDataObject:TObject); override;

     

    在这个函数下面可以不用去管粘包问题。接受到的是你客户端发送过来的对象。

  • 相关阅读:
    Mysql高手系列
    Mysql高手系列
    Mysql高手系列
    Mysql高手系列
    Mysql高手系列
    Mysql高手系列
    Mysql高手系列
    Mysql高手系列
    Mysql高手系列
    Mysql高手系列
  • 原文地址:https://www.cnblogs.com/DKSoft/p/3934851.html
Copyright © 2011-2022 走看看