0

我正在尝试(在这个社区的大力帮助下)将我的第一个客户端/服务器应用程序放在一起。

我正在使用 Indy 10 和 Delphi Xe2,但我怀疑我的问题不在于这些,而在于套接字的工作方式(如果你问我,巫术和黑魔法)。

因为我经常在按 Alt+F2 停止之前遇到异常断点并单步执行我的代码,所以我的下一次运行经常遇到异常“已经连接”,最终我得到“连接太多”。

我该如何收拾这个?

(另外,有没有人有一个使用 try ... 除了,ratehr 比 try ... finally 如 Indy 演示中的演示?)

4

1 回答 1

5

Connect()当您调用whileConnected()仍返回 true时,“已连接”发生在客户端。如果您断开连接并将未读数据留在IOHandler.InputBuffer. 在重新连接之前尝试清除InputBuffer。这很常见,因此近期对 Indy 的更新可能会解决该问题。

“连接太多”意味着您将服务器的MaxConnections属性设置为一个正的非零值,并且当新客户端尝试连接时,许多同时的客户端已经连接到服务器。如果您认为您没有同时建立那么多连接,那么这通常意味着您没有在服务器代码中正确管理连接,因此断开连接的客户端会被正确清理。最常见的原因是在您的代码中放置异常处理程序来捕获和吞下 Indy 的内部异常。如果您确实捕获了异常,请确保重新引发任何派生的异常EIdException并让服务器在内部处理它们。

于 2012-01-11T07:49:35.150 回答