当前位置: 首页 > news >正文

期货量化交易客户端开源教学第八节——TCP通信服务类

  private
    FReciveStr: AnsiString;     {接收到的数据}
    IsConErr: Boolean;      {网络连接是否失败}
    FSocket_LB: Integer;   {TCP连接类别,0为交易,1为行情,2为查询}
    FRetryCount: Integer; {网络连接重试次数}
    FLoginErrEvent: TLoginErrEvent;
    {心跳包定时器}
    procedure OnTimer_heatpack(Sender: TObject);
    {接收客户端发送的数据}
    procedure FTCP_serverClientRead(ReciveStr: AnsiString);
    procedure RunTCP_Conn_Event(connState: Boolean);
  public
    FBuffer_Port:array of Integer;
    Fbusiness_data: Tbuffer1024; {业务处理数据}
    Park_lenght: integer;    {收到的缓存包大小}
    buf_read: Tbuffer1024;  {读取到的字节}
    Timer_heatpack: TTimer; {心跳包定时器}
    FCMD_data: TMemoryStream;{指令数据}
    constructor Create(AOwner: TComponent);override;
    destructor Destroy; override;
    function open_service:Boolean; {打开服务}
    procedure RunLoginErrEvent;

    {TCP数据发送函数}
    procedure tcppark_sendbyte(Vdata : TMemoryStream);
    procedure cskt_Connect(Sender: TObject; Socket: TCustomWinSocket);
    procedure cskt_Disconnect(Sender: TObject;Socket: TCustomWinSocket);
    procedure cskt_Error(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);
    procedure cskt_Read(Sender: TObject; Socket: TCustomWinSocket);
    procedure SetSocket_LB(Value:Integer);
    property Socket_LB: Integer read FSocket_LB write SetSocket_LB;
    property OnLoginErrEvent: TLoginErrEvent read FLoginErrEvent write FLoginErrEvent;
  end;
var
  VG_TCP_Client: TTCP_client_service;
  VG_TCP_Client_Market: TTCP_client_service;

implementation
uses
  ElAES,uMain, ulog, uMsgDlg, uLogin;


constructor TTCP_client_service.Create(AOwner: TComponent);
begin
  inherited Create(nil);
  FCMD_data := TMemoryStream.Create;{指令数据}
  IsConErr := False;
  FRetryCount := 0;

  Self.OnConnect := cskt_Connect;
  Self.OnDisconnect := cskt_Disconnect;
  Self.OnError := cskt_Error;
  Self.OnRead := cskt_Read;

  Timer_heatpack := TTimer.Create(nil); {心跳包定时器}
  Timer_heatpack.Enabled := False;
  Timer_heatpack.OnTimer := ONTimer_heatpack; {定时器}
  Timer_heatpack.Interval := TCP_heatpack_time;
end;

function TTCP_client_service.open_service:Boolean; {打开服务}
begin
  try
    Inc(FRetryCount);
    Active := False;
    ClientType := ctNonBlocking;
    Host := VGnetworkset.FnetaddressList[VGnetworkset.netindex].ip ;
    if (FSocket_LB = 0) or

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 线程安全(二)synchronized 的底层实现原理、锁升级、对象的内存结构
  • 精通Postman响应解析:正则表达式的实战应用
  • LangChain与GraphQL:开启API开发的新篇章
  • 安防监控视频平台LntonCVS视频融合共享平台智慧消防实现远程集中视频监控方案
  • 面试问题梳理:项目中防止配置中的密码泄露-Jasypt
  • DNS缓存详解
  • headerpwn:一款针对服务器响应与HTTP Header的模糊测试工具
  • 优化实战篇—自关联的优化
  • 《昇思25天学习打卡营第05天|qingyun201003》
  • debian固定ip
  • c++ :运算符重载函数中的细节
  • jmeter-beanshell学习9-放弃beanshell
  • k8s快速部署一个网站
  • tkinter-TinUI-xml实战(11)多功能TinUIxml编辑器
  • 【python学习】python标准库之正则表达式库re的定义、功能和函数,以及正则表达式的元字符和含义
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 【个人向】《HTTP图解》阅后小结
  • Akka系列(七):Actor持久化之Akka persistence
  • Angular4 模板式表单用法以及验证
  • C++类中的特殊成员函数
  • Docker 笔记(2):Dockerfile
  • Docker容器管理
  • fetch 从初识到应用
  • gcc介绍及安装
  • Node 版本管理
  • Odoo domain写法及运用
  • PAT A1017 优先队列
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Spring Cloud中负载均衡器概览
  • springMvc学习笔记(2)
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • Web标准制定过程
  • 前端技术周刊 2019-02-11 Serverless
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 以太坊客户端Geth命令参数详解
  • !!java web学习笔记(一到五)
  • #QT(串口助手-界面)
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (C++17) std算法之执行策略 execution
  • (pojstep1.3.1)1017(构造法模拟)
  • (STM32笔记)九、RCC时钟树与时钟 第二部分
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (二)fiber的基本认识
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)
  • (力扣题库)跳跃游戏II(c++)
  • (实战篇)如何缓存数据
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (转)原始图像数据和PDF中的图像数据
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • ./和../以及/和~之间的区别
  • .DFS.
  • .NET BackgroundWorker