您的位置:首页 > 编程语言 > Delphi

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

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

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

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

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

修改后测试,问题解决。

总结:解决办法不一定是最好的,但是最经济的!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐