我正在使用 indy 的 tcp 服务器/客户端,一切正常(修复了一些错误),但有一个错误困扰着我。
当我冻结所有线程然后终止 tcp 客户端的进程时,服务器崩溃并在 tcpserver 中不停地引发该错误^。
有没有办法处理 Delphi 6 中的错误和其他套接字错误并防止服务器崩溃(我使用的是 delphi 6 / windows 8 64 位(可能不需要,但我从未在我的 win 7 上测试过,所以... )/ indy 9 / Indy TCP 服务器和客户端)?
您的服务器没有崩溃。 客户端连接关闭/丢失时遇到EIdSocketError
的完全正常的异常。TIdTCPServer
那是正常的行为。 TIdTCPserver
如果异常逃逸到服务器中,将为您在内部处理它并关闭套接字(您应该允许它这样做 - 如果您自己捕获它,完成后重新引发它)。您看到异常的唯一原因是调试器在您的应用程序看到它之前报告了它。只需按 F9 让调试器将其传递给应用程序进行正常处理,或者将调试器配置为忽略EIdException
基于 Indy 的异常。
请确保您使用的 Indy 版本比 D7 中安装的版本更新(您需要先删除旧版本)。有崩溃的线程错误 < 9.0.18