Delphi scktsrvr 三层架构程序,解决“远程主机强迫关闭了一个现有的连接”

我手里的一个老项目,用的是Delphi scktsrvr.exe 架构的三层程序,用户数300左右。使用过程中,一直有用户反映,有时表格填写地好好的,提交时却报错:远程主机强迫关闭了一个现有的连接。

重新读了一下源码,没看出什么毛病。于是上网百度,终于了解到,用户和服务器之间的连接,由于各种原因断掉,就会有这样的提示。应该把它看做常态。于是我就想在Application.OnException事件中,捕获到该错误时,重新使客户端连接服务器。

然而,测试结果与我想的大相径庭。客户端重新连接前,先 disconnect。这一步就卡死了!无法 disconnect,就无法再 connect。我只好另想办法。

delphi 2010及后继的版本中,三层加入了心跳包概念。参照该概念,我在程序的主窗口中加了一个 TTimer。每当用户登录后,激活TTimer,每隔一段时间刷新一下用户权限(也可改为别的,如:刷新全局变量),一直保持数据库连接不断。

修改后测试,问题解决。

总结:解决办法不一定是最好的,但是最经济的!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值