首页 > 代码库 > DIOCP3 - 关于接收数据
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;
在这个函数下面可以不用去管粘包问题。接受到的是你客户端发送过来的对象。
DIOCP3 - 关于接收数据
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。