Delphi scktsrvr 三层架构程序,解决“远程主机强迫关闭了一个现有的连接”
2013-11-12 09:30
302 查看
我手里的一个老项目,用的是Delphi scktsrvr.exe 架构的三层程序,用户数300左右。使用过程中,一直有用户反映,有时表格填写地好好的,提交时却报错:远程主机强迫关闭了一个现有的连接。
重新读了一下源码,没看出什么毛病。于是上网百度,终于了解到,用户和服务器之间的连接,由于各种原因断掉,就会有这样的提示。应该把它看做常态。于是我就想在Application.OnException事件中,捕获到该错误时,重新使客户端连接服务器。
然而,测试结果与我想的大相径庭。客户端重新连接前,先 disconnect。这一步就卡死了!无法 disconnect,就无法再 connect。我只好另想办法。
delphi 2010及后继的版本中,三层加入了心跳包概念。参照该概念,我在程序的主窗口中加了一个 TTimer。每当用户登录后,激活TTimer,每隔一段时间刷新一下用户权限(也可改为别的,如:刷新全局变量),一直保持数据库连接不断。
修改后测试,问题解决。
总结:解决办法不一定是最好的,但是最经济的!
重新读了一下源码,没看出什么毛病。于是上网百度,终于了解到,用户和服务器之间的连接,由于各种原因断掉,就会有这样的提示。应该把它看做常态。于是我就想在Application.OnException事件中,捕获到该错误时,重新使客户端连接服务器。
然而,测试结果与我想的大相径庭。客户端重新连接前,先 disconnect。这一步就卡死了!无法 disconnect,就无法再 connect。我只好另想办法。
delphi 2010及后继的版本中,三层加入了心跳包概念。参照该概念,我在程序的主窗口中加了一个 TTimer。每当用户登录后,激活TTimer,每隔一段时间刷新一下用户权限(也可改为别的,如:刷新全局变量),一直保持数据库连接不断。
修改后测试,问题解决。
总结:解决办法不一定是最好的,但是最经济的!
相关文章推荐
- Delphi scktsrvr 三层架构程序,解决“远程主机强迫关闭了一个现有的连接”(2)
- sql server 2000下的关于“provider: TCP 提供程序, error: 0 - 远程主机强迫关闭了一个现有的连接”问题的解决
- DeviceMonitor Adb connection Error:远程主机强迫关闭了一个现有的连接 解决方法
- 【Adb connection Error:远程主机强迫关闭了一个现有的连接】错误解决方法
- 解决WCF传输大数据量时出错并提示:远程主机强迫关闭了一个现有的连接
- 解决eclipse中Adb connection Error:远程主机强迫关闭了一个现有的连接 的问题
- myEclipse/eclipse下控制台"DeviceMonitor]Adb connection Error:远程主机强迫关闭了一个现有的连接。"解决办法
- Adb connection Error:远程主机强迫关闭了一个现有的连接 解决方法
- 在向服务器发送请求时发生传输级错误。 (provider: TCP 提供程序, error: 0 - 远程主机强迫关闭了一个现有的连接。)
- svn: Can't read from connection: 远程主机强迫关闭了一个现有的连接 的解决办法
- 解决:Adb connection Error:远程主机强迫关闭了一个现有的连接
- Gradle sync failed: 远程主机强迫关闭了一个现有的连接,JDK停止运行解决办法
- 解决“Adb connection Error:远程主机强迫关闭了一个现有的连接”的问题
- Adb connection Error:远程主机强迫关闭一个现有的连接--解决方法
- monkeyrunner执行adb push时出现“远程主机强迫关闭了一个现有的连接”解决方法
- 解决 Android 远程主机强迫关闭了一个现有的连接
- “Adb connection Error:远程主机强迫关闭了一个现有的连接。”之我的解决方法。
- 解决Adb connection Error:远程主机强迫关闭了一个现有的连接
- System.Data.SqlClient.SqlException: 在向服务器发送请求时发生传输级错误。 (provider: TCP 提供程序, error: 0 - 远程主机强迫关闭了一个现有的连接。) .