当idHttpServer
断开连接时是否有任何事件被触发?
断开连接我不是说客户端断开连接,而是idHTTPServer
由于某种原因断开连接。
我可以更好地解释一下:当idHTTPServer
正在侦听套接字端口时,由于某种未知原因,计算机断开网络连接(例如,假设网络变得不可用)组件不再工作(它停止监听端口),在这种情况下,我需要重新连接(重新打开端口)。根据帮助,idHttpServer.OnDisconnect
仅在客户端与服务器断开连接时才会被触发。
答案 0 :(得分:3)
您可以考虑在一段时间内通过自身连接创建与服务器的监视程序连接,当您无法连接时,您将重新启动服务器或您需要做的任何事情来纠正问题。
这确实有额外的好处,你实际上是在测试与服务器的连接,所以如果发生任何其他可能导致客户端问题连接的问题,这些问题将会被选中。
这也可以是一个单独的应用程序,它能够关闭,终止和重新启动服务器
答案 1 :(得分:2)
我有两条建议可以帮助您解决问题。
首先,添加一个计时器,每分钟一次(或您选择的间隔),“询问”窗口,如果您的端口仍在监听。这必须在Indy之外完成,因为Indy没有这样做的机制。如果Windows告诉您此端口未侦听,则将其记录到日志中并重新启动服务器。定期检查此日志,看看您的应用是否曾报告您的端口停止收听。这将告诉您它是否真的断开连接。
其次,您可能需要考虑每晚重启服务器套接字。例如,每晚午夜,停止并启动服务器套接字以确保新连接。可能存在一些变量溢出,例如,如果您不断递增数字并且它会不断变大和变大,那么随着时间的推移,该数字将变得太大而您的应用程序无法保留它。这可能发生在5秒或5个月的运行时间内,具体取决于增加它的速度。