Delphi断线重连线程
作为tcp客户端,使用TIdTcpClient控件,在与后台服务的交互时,如果出现网络异常,或者后台服务重启,会导致无法保存数据或查询后台数据,这种情况下可以开启断线重连线程,自动连接上后台服务
unit threadReconnectServer;interfaceusesClasses, SysUtils, ScktComp, windows, ComCtrls, forms, activex, StdCtrls, strutils, IdTCPClient, Global;typeTReconnectServerThread = class(TThread)privateclient: TIdTCPClient;protectedprocedure Execute; override;publicconstructor Create(IdTCPClient1: TIdTCPClient);destructor Destroy; override;end;implementationconstructor TReconnectServerThread.Create(IdTCPClient1: TIdTCPClient);
begininherited Create(True);client := IdTCPClient1;FreeOnTerminate := False;
end;destructor TReconnectServerThread.Destroy;
begininherited destroy;
end;procedure TReconnectServerThread.Execute;
beginwhile not Terminated dobeginSleep(5000);tryclient.Disconnect;client.Connect;gOnlineSuccess := True;Suspend;excepton e: Exception dobegingOnlineSuccess := False;end;end;end;
end;end.
在主窗体create中创建线程对象,创建成功后,并不会执行线程,在需要的时候,唤醒线程即可
// 声明
ReconnectServerThread: TReconnectServerThread;// 在create中
// 断线重连线程
ReconnectServerThread := TReconnectServerThread.Create(IdTCPClient1);
function TfrmMain.SendMsgToServer(msg: string): Boolean;procedure ReconnectServer;begingOnlineSuccess := False;// 启动重连线程ReconnectServerThread.Resume;end;beginResult := false;tryif gOnlineSuccess and IdTCPClient1.Connected thenbegin// 末尾加上分割符,保证数据传输到服务器后,能正确按Json解析IdTCPClient1.IOHandler.Write(msg + '&&', IndyTextEncoding(TEncoding.UTF8));Result := true;endelsebeginReconnectServer;end;excepton e: Exception dobeginReconnectServer;end;end;
end;
Delphi断线重连线程相关推荐
- C# Socket客户端采用双线程断网重连断线重连)
C# Socket客户端采用双线程断网重连断线重连 2021年07月15日 13:38:18更新 C# Socket服务端 双线程断网重连断线重连 C# Socket客户端采用双线程断网重连断线重连 ...
- asyncio.Protocol socket 断线重连
asyncio.Protocol socket 断线重连 原文:https://www.jianshu.com/p/f5bc755d3d8a 场景 使用asyncio.Protocol进行异步连接时, ...
- 支持断线重连、永久watcher、递归操作 ZooKeeper 客户端
项目介绍 ZooKeeper本质上是一个分布式的小文件存储系统.原本是Apache Hadoop的一个组件,现在被拆分为一个Hadoop的独立子项目. Zookeeper 作为一个分布式的服务框架,主 ...
- golang mysql断线_MySQL的连接池、异步、断线重连-Go语言中文社区
MySQL长连接 MySQL短连接每次请求操作数据库都需要建立与MySQL服务器建立TCP连接,这是需要时间开销的.TCP连接需要3次网络通信.这样就增加了一定的延时和额外的IO消耗.请求结束后会关闭 ...
- springboot redis 断线重连_Redis(9)——史上最强【集群】入门实践教程
一.Redis 集群概述 Redis 主从复制 到 目前 为止,我们所学习的 Redis 都是 单机版 的,这也就意味着一旦我们所依赖的 Redis 服务宕机了,我们的主流程也会受到一定的影响,这当然 ...
- activemq断线重连
断线重连机制是ActiveMQ的高可用性具体体现之一. 具体就是使用failover方式,使得连接断开之后,可以不断的重试连接到一个或多个brokerURL. 例如:failover:(tcp://1 ...
- Netty的断线重连
因为工作中经常使用到TCP,所以会频繁使用到诸如Mina或Netty之类的通信框架,为了方便项目的逻辑调用,经常会在框架的基础上再一次进行封装,这样做其实有画蛇添足的嫌疑,但也是无奈之举. 这里主要记 ...
- PHP如何解决swoole守护进程Redis假死 ,mysql断线重连问题?
PHP如何解决swoole守护进程Redis假死 ,mysql断线重连问题? 最近公司有个项目,要举办一个线上活动,我这边负责提供接口记录用户访问记录,与操作记录,由于活动参与人数可能比较多,为了不影 ...
- Android Socket连接(模拟心跳包,断线重连,发送数据等)
首页 博客 学院 下载 GitChat TinyMind 论坛 问答 商城 VIP 活动 招聘 ITeye CSTO 写博客 发Chat 喻志强的博客 耐心 细心 用心 传播正能量 RSS订阅 原 A ...
最新文章
- Tomcat7.0源码分析——Session管理分析(下)
- Linux无法联网怎么办?解析VMware上的CentOS7(Linux)系统无法联网的解决办法
- STM8中GPIO的12种模式
- 简单易用的baidutemplate模板的使用
- 高等数学下-赵立军-北京大学出版社-题解-练习11.3
- python组合函数_Python---函数---参数组合
- php读取云平台数据库,读取Read · ThinkPHP5+数据库和模型 · 看云
- 在sql server中用正则表达式替换html标签,SQL Server中利用正则表达式替换字符串
- Hive MapJoin OOM
- 2023年华南理工大学运筹学与控制论上岸前辈备考经验
- 计算机各个硬盘分区名称不见了,开机后电脑硬盘分区突然消失了,文件都不见了还能找回吗?...
- FIR Filter
- Linux(2019年)-10.11
- MySQL练习题(4)
- os.environ[‘CUDA_VISIBLE_DEVICES‘]指定GPU后,还是用的“0“卡
- 反游戏规则~触发5亿创设~引发3-6个跌停?
- 【Java基础】Map遍历的5种方式
- 中国人工智能学会通讯——无智能,不驾驶——面向未来的智能驾驶时代 ( 下 )...
- Linux系统vim命令总结
- codeblocks输出中文乱码解决办法
热门文章
- sqlserver位数不够左边补0
- 590. N-ary Tree Postorder Traversal(Tree)
- python列表添加_Python-如何为列表添加元素
- 华为鸿蒙系统深圳,鸿蒙操作系统面世 华为称“把不可能变为可能”
- 蚂蚁金服、滴滴们掀起A/H上市潮,它们能打破折溢价的烦恼吗?
- onenote标注pdf笔记_如何利用OneNote高效做笔记
- js清除浏览器缓存的几种方法
- 学习mysql_day2
- 程序员关爱-坐姿检测-设计思路及使用与下载
- 第12章 从美国次贷危机中学到什么