作为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断线重连线程相关推荐

  1. C# Socket客户端采用双线程断网重连断线重连)

    C# Socket客户端采用双线程断网重连断线重连 2021年07月15日 13:38:18更新 C# Socket服务端 双线程断网重连断线重连 C# Socket客户端采用双线程断网重连断线重连 ...

  2. asyncio.Protocol socket 断线重连

    asyncio.Protocol socket 断线重连 原文:https://www.jianshu.com/p/f5bc755d3d8a 场景 使用asyncio.Protocol进行异步连接时, ...

  3. 支持断线重连、永久watcher、递归操作 ZooKeeper 客户端

    项目介绍 ZooKeeper本质上是一个分布式的小文件存储系统.原本是Apache Hadoop的一个组件,现在被拆分为一个Hadoop的独立子项目. Zookeeper 作为一个分布式的服务框架,主 ...

  4. golang mysql断线_MySQL的连接池、异步、断线重连-Go语言中文社区

    MySQL长连接 MySQL短连接每次请求操作数据库都需要建立与MySQL服务器建立TCP连接,这是需要时间开销的.TCP连接需要3次网络通信.这样就增加了一定的延时和额外的IO消耗.请求结束后会关闭 ...

  5. springboot redis 断线重连_Redis(9)——史上最强【集群】入门实践教程

    一.Redis 集群概述 Redis 主从复制 到 目前 为止,我们所学习的 Redis 都是 单机版 的,这也就意味着一旦我们所依赖的 Redis 服务宕机了,我们的主流程也会受到一定的影响,这当然 ...

  6. activemq断线重连

    断线重连机制是ActiveMQ的高可用性具体体现之一. 具体就是使用failover方式,使得连接断开之后,可以不断的重试连接到一个或多个brokerURL. 例如:failover:(tcp://1 ...

  7. Netty的断线重连

    因为工作中经常使用到TCP,所以会频繁使用到诸如Mina或Netty之类的通信框架,为了方便项目的逻辑调用,经常会在框架的基础上再一次进行封装,这样做其实有画蛇添足的嫌疑,但也是无奈之举. 这里主要记 ...

  8. PHP如何解决swoole守护进程Redis假死 ,mysql断线重连问题?

    PHP如何解决swoole守护进程Redis假死 ,mysql断线重连问题? 最近公司有个项目,要举办一个线上活动,我这边负责提供接口记录用户访问记录,与操作记录,由于活动参与人数可能比较多,为了不影 ...

  9. Android Socket连接(模拟心跳包,断线重连,发送数据等)

    首页 博客 学院 下载 GitChat TinyMind 论坛 问答 商城 VIP 活动 招聘 ITeye CSTO 写博客 发Chat 喻志强的博客 耐心 细心 用心 传播正能量 RSS订阅 原 A ...

最新文章

  1. Tomcat7.0源码分析——Session管理分析(下)
  2. Linux无法联网怎么办?解析VMware上的CentOS7(Linux)系统无法联网的解决办法
  3. STM8中GPIO的12种模式
  4. 简单易用的baidutemplate模板的使用
  5. 高等数学下-赵立军-北京大学出版社-题解-练习11.3
  6. python组合函数_Python---函数---参数组合
  7. php读取云平台数据库,读取Read · ThinkPHP5+数据库和模型 · 看云
  8. 在sql server中用正则表达式替换html标签,SQL Server中利用正则表达式替换字符串
  9. Hive MapJoin OOM
  10. 2023年华南理工大学运筹学与控制论上岸前辈备考经验
  11. 计算机各个硬盘分区名称不见了,开机后电脑硬盘分区突然消失了,文件都不见了还能找回吗?...
  12. FIR Filter
  13. Linux(2019年)-10.11
  14. MySQL练习题(4)
  15. os.environ[‘CUDA_VISIBLE_DEVICES‘]指定GPU后,还是用的“0“卡
  16. 反游戏规则~触发5亿创设~引发3-6个跌停?
  17. 【Java基础】Map遍历的5种方式
  18. 中国人工智能学会通讯——无智能,不驾驶——面向未来的智能驾驶时代 ( 下 )...
  19. Linux系统vim命令总结
  20. codeblocks输出中文乱码解决办法

热门文章

  1. sqlserver位数不够左边补0
  2. 590. N-ary Tree Postorder Traversal(Tree)
  3. python列表添加_Python-如何为列表添加元素
  4. 华为鸿蒙系统深圳,鸿蒙操作系统面世 华为称“把不可能变为可能”
  5. 蚂蚁金服、滴滴们掀起A/H上市潮,它们能打破折溢价的烦恼吗?
  6. onenote标注pdf笔记_如何利用OneNote高效做笔记
  7. js清除浏览器缓存的几种方法
  8. 学习mysql_day2
  9. 程序员关爱-坐姿检测-设计思路及使用与下载
  10. 第12章 从美国次贷危机中学到什么