开发时连接太多

时间:2012-01-11 07:19:10

标签: delphi sockets delphi-xe2 indy10

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

我正在使用Indy 10和Delphi Xe2,但怀疑我的问题不在于那些,而在于如何使用套接字(如果你问我,那就是巫术和黑色艺术)。

因为我经常点击异常断点并逐步执行我的代码,然后按Alt + F2停止,我的下一次运行经常会遇到“已经连接”的异常,最终我得到“太多连接”。

我该如何整理?

(另外,有没有人有一个使用试用的演示...除了,比试试的速度更快...最终在Indy演示中?)

1 个答案:

答案 0 :(得分:5)

当您Connect()仍然返回true时,在客户端发生

“已连接”。如果您断开连接并在Connected()中保留未读数据,通常会发生这种情况。尝试在重新连接前清除IOHandler.InputBuffer。这是常见的,因此对Indy的近期更新可能会解决这个问题。

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