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

devtools/2024/10/15 20:20:41/

  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


http://www.ppmy.cn/devtools/58768.html

相关文章

Tomcat异步请求实现原理和应用场景简介

Tomcat支持异步请求,这是从Servlet 3.0规范开始引入的特性。以下将详细介绍Tomcat支持异步请求的实现原理以及Java应用场景。 Tomcat支持异步请求的实现原理 Tomcat支持异步请求的实现主要依赖于Servlet 3.0规范中引入的异步处理机制。具体来说,实现原…

Xcode依赖管理大师:精通项目依赖的艺术与实践

Xcode依赖管理大师:精通项目依赖的艺术与实践 在现代软件开发中,项目依赖管理是确保项目顺利进行的关键环节。Xcode,作为苹果官方的集成开发环境(IDE),提供了一套强大的工具来管理项目依赖。本文将深入探讨…

【Word】快速对齐目录

目录标题 1. 全选要操作的内容 → 右键 → 段落2. 选则制表位3. 配置制表符4. Tab键即可 1. 全选要操作的内容 → 右键 → 段落 2. 选则制表位 3. 配置制表符 4. Tab键即可

在一行中实现每个盒子间隔相等

达成效果&#xff1a; 1. 使用justify-content: space-evenly; <!DOCTYPE html> <html lang"zh-cn"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"…

公司内部配置GitLab,通过SSH密钥来实现免密clone、push等操作

公司内部配置GitLab&#xff0c;通过SSH密钥来实现免密clone、push等操作。以下是配置SSH密钥以实现免密更新的步骤&#xff1a; 1.生成SSH密钥 在本地计算机上打开终端或命令提示符。输入以下命令以生成一个新的SSH密钥&#xff1a;ssh-keygen -t rsa -b 4096 -C "your…

Xcode持续集成之道:自动化构建与部署的精粹

标题&#xff1a;Xcode持续集成之道&#xff1a;自动化构建与部署的精粹 在快节奏的软件开发中&#xff0c;持续集成&#xff08;Continuous Integration, CI&#xff09;是提升开发效率和软件质量的关键实践。Xcode作为苹果生态中的核心开发工具&#xff0c;提供了与多种持续…

k8s核心操作_k8s中的存储抽象_基本概念与NFS搭建_Deployment使用NFS进行挂载---分布式云原生部署架构搭建028

然后我们继续开始看 如果我们使用容器部署,比如我们有三个节点,一个是master,一个node1 一个是node2 那么pod 中我们可以看到,容器中的 /data 等各个目录都映射了出来了,但是 如果比如上面红色的部分,有个pod,原来在node2上,最右边那个,但是这个pod宕机了 那么,k8s会在node…

半小时get ESG入门证书【详细中英文笔记二】

三、 Environmental Factors ESG Facators ESG的三要素 Environmental Factors include&#xff1b; 1、Environmental Issues 2、Social lssues 3、Governance lssues All have a material impact on a wide spectrum of industries. ESG因素主要包括E环境、S社会、G治理 …