2

断开连接时是否会触发任何事件idHttpServer

断开连接并不是指客户端断开连接时,而是idHTTPServer由于某种原因断开连接时。

我可以更好地解释它:当idHTTPServer正在侦听套接字端口时,由于某种未知原因,计算机与网络断开连接(例如,网络变得不可用)组件不再工作(它停止侦听到端口),在这种情况下,我需要重新连接(重新打开端口)。根据idHttpServer.OnDisconnect帮助,仅当客户端与服务器断开连接时才会触发。

4

2 回答 2

3

您可以考虑在一段时间内通过自连接创建与服务器的看门狗连接,当您无法连接时,您将重新启动服务器或您需要做的任何事情来纠正问题。

这确实有额外的好处,您实际上是在测试与服务器的连接,因此如果发生任何其他可能导致客户端问题连接的问题,这些将被拾取。

这也可以是一个单独的应用程序,它能够关闭、杀死和重新启动您的服务器

于 2012-06-21T07:58:43.497 回答
2

我有两个建议可以帮助您解决问题。

首先,添加一个计时器,每分钟(或您选择的间隔)一次,“询问”窗口您的端口是否仍在侦听。这必须在 Indy 之外完成,因为 Indy 没有这样做的机制。如果 Windows 告诉您此端口未在侦听,则将其记录到日志中并重新启动服务器。定期检查此日志以查看您的应用是否曾报告您的端口停止侦听。这将告诉您它是否真的断开连接。

其次,您可能需要考虑每晚重新启动服务器套接字。例如,每晚午夜,停止并启动服务器套接字以确保新连接。可能存在一些变量溢出,例如,如果您不断增加一个数字并且它越来越大,那么随着时间的推移,该数字将变得太大而您的应用程序无法容纳它。这可能发生在 5 秒或 5 个月的运行时间之间,具体取决于您增加它的速度。

于 2012-06-20T18:00:22.600 回答