期货量化交易客户端开源教学第八节——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
相关文章:
期货量化交易客户端开源教学第八节——TCP通信服务类
private FReciveStr: AnsiString; {接收到的数据} IsConErr: Boolean; {网络连接是否失败} FSocket_LB: Integer; {TCP连接类别,0为交易,1为行情,2为查询} FRetryCount: Integer; {网络连接重试次数} FLoginErrEvent: TLoginErrEvent; {…...
bi项目笔记
1.bi是什么 bi项目就是商业智能系统,也就是数据可视画、报表可视化系统,如下图的就是bi项目了 2.技术栈...
金蝶云苍穹-插件开发(四)GPT开发相关插件
我只对GPT开发的相关插件进行讲解,因为我的是插件开发教程,关于GPT的一些提示词的写法,GPT任务的配置,请去金蝶云苍穹的文档和社区内学习。 GPT自定义操作 GPT自定义操作的代码的类要实现 IGPTAction 这个接口,这个接…...
【机器学习】精准农业新纪元:机器学习引领的作物管理革命
📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀目录 🔍1. 引言📒2. 精准农业的背景与现状🍁精准农业的概念与发展历程🍂国内外精准农业实践案…...
一键掌握天气动态 - 基于Vue和高德API的实时天气查询
前言 本文将学习如何使用Vue.js快速搭建天气预报界面,了解如何调用高德地图API获取所需的天气数据,并掌握如何将两者有机结合,实现一个功能丰富、体验出色的天气预报应用 无论您是前端新手还是有一定经验,相信这篇教程都能为您带来收获。让我们一起开始这段精彩的Vue.js 高德…...
PostgreSQL修改最大连接数
在使用PostgreSQL 的时候,经常会遇到这样的错误提示, sorry, too many clients already,这是因为默认PostgreSQL最大连接数是 100, 一般情况下,个人使用时足够的,但是在生产环境,这个连接数是远远不够的&am…...
C# SqlSugar 如何使用Sql语句进行查询,并带参数进行查询,防注入
一般ORM查询单表数据已经是很简单的一种方式了 详情可以看我的另一篇文章:ORM C# 封装SqlSugar 操作数据库_sqlsugar 基类封装-CSDN博客 下面是介绍有些数据是需要比较复杂的SQL语句来进行查询的时候,则需要自行组装SQL语句来进行查询,下面…...
slf4j日志框架和logback详解
slf4j作用及其实现原理 SLF4J(Simple Logging Facade for Java)是一种日志框架的抽象层,它并不是一个具体的日志实现,而是一个接口或门面(Facade),旨在为各种不同的日志框架提供一个统一的API。…...
解决@Data与@Builder冲突的N种策略
前言 在Java项目中,Lombok的Data和Builder注解因其便捷性深受开发者喜爱,但两者并用时可能引发构造方法冲突。本文将全面解析这一问题的根源,并介绍包括利用实验性思路探讨的Tolerate概念在内的多种解决方案,确保您在实践中游刃有…...
一文看懂LUT(Lookup Table)查找表
文章目录 原理方法具体步骤和代码实现 查找表(Lookup Table,LUT)方法是一种通过预先计算并存储函数值来加速计算的方法。对于激活函数(例如ReLU),使用LUT可以在一定范围内通过查找预计算的值来近似函数计算…...
06 人以群分 基于邻域的协同过滤算法
这一讲我们将正式进入算法内容的学习。 推荐算法本质 推荐算法本质上是一一种信息处理方法,它将用户信息和物品信息处理后,最终输出了推荐结果。因为 05 讲中基于热门推荐、基于内容推荐、基于关联规则推荐等方法比较粗放,所以推荐结果往往…...
SQL性能下降的原因
一、SQL性能下降的原因 主要是性能下降SQL慢、执行时间长、等待时间长 不是一条SQL抓出来就要优化,在真实的生产环境下这种故障第一个要去复线,有可能去排查的时候没,所以没法复线。 可能需要它跑半天或者一天来缩小筛查的范围,…...
js的原型
原型: 1定义:原型是function对象的一个属性,它定义了构造函数制造出的对象的公共祖先。 通过该构造函数产生的对象,以继承该原型的属性和方法。原型也是对象。 2.利用原型特点和概念,可以提取共有属性。 3.对象如…...
FastAPI 学习之路(三十七)元数据和文档 URL
实现前的效果 那么如何实现呢,第一种方式如下: from routers.items import item_router from routers.users import user_router""" 自定义FastApi应用中的元数据配置Title:在 OpenAPI 和自动 API 文档用户界面中作为 API 的…...
C 语言结构体
本博客涉及的结构体知识有: 1.0:结构体的创建和使用 2.0: typedef 关键字与#define 关键字的区别 3.0: 结构体成员的访问【地址访问与成员访问】 4.0: 结构体嵌套调用 5.0 数组访问赋值结构体成员 ...... 1.0:结构体的创建和使用 结…...
MySQl高级篇-主从复制
主从复制 复制的基本原理 slave会从master读取binlog来进行数据同步 MySQL复制过程分成三步: master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;slave将master的binary log events拷贝到它的中继日志(r…...
JMeter案例分享:通过数据验证的错误,说说CSV数据文件设置中的线程共享模式
前言 用过JMeter参数化的小伙伴,想必对CSV Data Set Config非常熟悉。大家平时更关注变量名称,是否忽略首行等参数,其余的一般都使用默认值。然而我最近遇到一个未按照我的预想读取数据的案例,原因就出在最后一个参数“线程共享模…...
数学建模·Topsis优劣解距离法
Topsis优劣解 一种新的评价方法,特点就是利用原有数据,客观性强。 相较于模糊评价和层次评价 更加客观,充分利用原有数据,精确反映方案差距 基本原理 离最优解最近,离最劣解越远 具体步骤 正向化 代码与原理与熵权…...
数学建模中常用的数据处理方法
常用的数据处理方法 本文参考 B站西电数模协会的讲解视频 ,只作笔记提纲,想要详细学习具体内容请观看 up 的学习视频。国赛的 C 题一般数据量比较大。 这里介绍以下两种方法: 数据预处理方法 数据分析方法 数据预处理方法 1. 数据清洗 为…...
C嘎嘎:函数模版和类模版
目录 泛型编程 函数模版 函数模版概念 函数模版的格式 函数模版的原理 函数模版的实例化 函数参数的匹配原则 类模版 类模版的定义格式 类模版的实例化 泛型编程 如何实现一个通用的交换函数呢 void Swap(int& left, int& right) {int temp left;left rig…...
避免自激!AD8367用作AGC放大器时的PCB布局避坑指南与环路稳定性分析
避免自激!AD8367用作AGC放大器时的PCB布局避坑指南与环路稳定性分析 在射频与中频电路设计中,AD8367作为一款高性能可变增益放大器(VGA),因其宽增益范围(45dB)和集成平方律检波器特性,常被用于自动增益控制(AGC)系统。然而&#x…...
千问3.5-9B模型Java开发环境快速配置:从JDK安装到项目集成
千问3.5-9B模型Java开发环境快速配置:从JDK安装到项目集成 1. 引言 如果你是一名Java开发者,想要快速上手调用千问3.5-9B大模型,这篇文章就是为你准备的。我们将从最基础的JDK安装开始,一步步带你完成整个开发环境的配置&#x…...
Ostrakon-VL模型压缩与量化实战:在消费级GPU上的部署优化
Ostrakon-VL模型压缩与量化实战:在消费级GPU上的部署优化 1. 为什么需要模型压缩与量化 当你第一次尝试在消费级GPU上运行Ostrakon-VL这样的视觉语言大模型时,可能会遇到显存不足或推理速度过慢的问题。这就像试图用家用轿车运送重型建筑材料——虽然理…...
38_一文讲清楚蓝牙协议栈和BLE协议
一、蓝牙协议栈概述1. 蓝牙协议栈的分类(1) 经典蓝牙协议栈(BR/EDR)a. 核心协议层i. 无线电层(Radio)⓵ 工作在 2.42.42.4 GHz 的 ISM 频段⓶ 采用跳频扩谱(FHSS)技术,每秒跳频 160016001600 次…...
【MicroPython】基于ESP32的REPL交互式在线仿真开发环境实战
1. 为什么你需要ESP32的MicroPython REPL环境 第一次接触MicroPython的开发者经常会问:为什么不用传统的C语言开发ESP32?这里有个很现实的痛点——当你需要快速验证一个硬件功能时,C语言那套编译、烧录、调试的流程实在太重了。我去年给团队…...
ModTheSpire技术全解析:从模组加载到高级开发指南
ModTheSpire技术全解析:从模组加载到高级开发指南 【免费下载链接】ModTheSpire External mod loader for Slay The Spire 项目地址: https://gitcode.com/gh_mirrors/mo/ModTheSpire 引言:为何需要模组加载器? 当你在《Slay The Spi…...
复古游戏机式AI绘图:像素极光引擎LoRA模块化扩展实战教程
复古游戏机式AI绘图:像素极光引擎LoRA模块化扩展实战教程 1. 像素极光引擎简介 Pixel Aurora(像素极光)是一款将复古游戏机美学与现代AI绘图技术完美融合的创新工具。它采用经典的8-bit像素风格界面,却搭载了最先进的扩散模型技…...
Go 语言实现 RAG 系统:从原理、架构到生产级工程落地
Go 语言实现 RAG 系统:从原理、架构到生产级工程落地 一、为什么要用 Go 做 RAG 工程 RAG(Retrieval-Augmented Generation,检索增强生成)已经成为企业落地大模型最常见、也最务实的一条路线。原因很直接:纯大模型回答虽然能力强,但在企业场景里通常会遇到三类核心问题…...
Pixel Epic · Wisdom Terminal参数详解:能量值阈值设置对生成稳定性影响分析
Pixel Epic Wisdom Terminal参数详解:能量值阈值设置对生成稳定性影响分析 1. 像素史诗终端概述 Pixel Epic Wisdom Terminal是一款创新性的研究报告辅助工具,它将枯燥的科研工作转化为一场充满趣味的像素冒险。这款终端基于AgentCPM-Report大模型构…...
Cosmos-Reason1-7B应用案例:自动驾驶决策树逻辑鲁棒性验证本地化方案
Cosmos-Reason1-7B应用案例:自动驾驶决策树逻辑鲁棒性验证本地化方案 1. 项目背景与价值 自动驾驶系统的决策逻辑验证一直是行业难题。传统的测试方法需要大量路测数据,成本高且覆盖场景有限。特别是决策树逻辑的鲁棒性验证,需要测试各种边…...
