求教前辈们SOCKET的心跳法

菜鸟求指点 2018-02-05 03:34:12
公司一直是做印刷厂的ERP,处于局域网系统,最近1年来很多公司开始要求放在云端。
本新手在弄的时候发现SOCKET的机制有问题,服务器放云端,socket断开不提示,也无法判断是否连接,断开了再次连接不抛异常,直接白屏卡死,所以想做心跳法,但是没接触过这块,直接暂时用时间监控器定时连接重连服务器,然而最近有一个客户网络极其不稳定,基本上达到10秒钟都能断开1-2次的那种,如果太频繁连接服务器 ,服务器有点受不了,求教心跳法

代码机制
TClientDataSet-TSocketConnection - TADOConnection -SQL
客户端 服务端

分有限,很抱歉,菜鸟认真求指点
...全文
1568 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sczyq 2018-02-11
  • 打赏
  • 举报
回复
需要一个线程,设置检查时间点与间隔(一般是间隔30秒就可以了),如果主进程进行过通信,就将时间点推迟,到了时间点,发送一次检查指令(前提是服务端能够忽略该指令,实在没办法,就发送一个最少的数据查询,如获取服务器时间),当然,还需要线程安全锁来保证安全。检查指令失败了就直接断开,每次查询前首先检查连接状态。
菜鸟求指点 2018-02-06
  • 打赏
  • 举报
回复
引用 3 楼 lyhoo163 的回复:
您是使用DataSnap,还是直接连接? 心跳只能,定时传送一次数据,让服务器与客户端交换数据,确定处于连接状态。 关于云端,要区别二种类型: 一是专用的云端服务器,仅提供数据库的连接。 一种是服务器(专用独立服务器)上,DataSnap需要上服务器。 建议使用DataSnap。它的客户端和服务器控件,可以保持连接状态。连接机制比较好。
用的IAppServer
菜鸟求指点 2018-02-06
  • 打赏
  • 举报
回复
引用 3 楼 lyhoo163 的回复:
您是使用DataSnap,还是直接连接? 心跳只能,定时传送一次数据,让服务器与客户端交换数据,确定处于连接状态。 关于云端,要区别二种类型: 一是专用的云端服务器,仅提供数据库的连接。 一种是服务器(专用独立服务器)上,DataSnap需要上服务器。 建议使用DataSnap。它的客户端和服务器控件,可以保持连接状态。连接机制比较好。
客户现在太多 没办法改成DataSnap
菜鸟求指点 2018-02-06
  • 打赏
  • 举报
回复
引用 3 楼 lyhoo163 的回复:
您是使用DataSnap,还是直接连接? 心跳只能,定时传送一次数据,让服务器与客户端交换数据,确定处于连接状态。 关于云端,要区别二种类型: 一是专用的云端服务器,仅提供数据库的连接。 一种是服务器(专用独立服务器)上,DataSnap需要上服务器。 建议使用DataSnap。它的客户端和服务器控件,可以保持连接状态。连接机制比较好。
现在是直连服务器IP地址,用的是独立服务器
lyhoo163 2018-02-06
  • 打赏
  • 举报
回复
您是使用DataSnap,还是直接连接? 心跳只能,定时传送一次数据,让服务器与客户端交换数据,确定处于连接状态。 关于云端,要区别二种类型: 一是专用的云端服务器,仅提供数据库的连接。 一种是服务器(专用独立服务器)上,DataSnap需要上服务器。 建议使用DataSnap。它的客户端和服务器控件,可以保持连接状态。连接机制比较好。
  • 打赏
  • 举报
回复
if SocketConnection1.Connected...
lyhoo163 2018-02-05
  • 打赏
  • 举报
回复
刚看到明天,再回复。
菜鸟求指点 2018-02-05
  • 打赏
  • 举报
回复
@lyhoo163

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧