【发布时间】:2012-06-21 18:07:50
【问题描述】:
idHttpServer 断开连接时是否会触发任何事件?
断开连接并不是指客户端断开连接,而是idHTTPServer 出于某种原因断开连接。
我可以更好地解释它:当idHTTPServer 正在侦听套接字端口并且由于某种未知原因,计算机与网络断开连接(例如,网络变得不可用)时,组件不会不再工作(它停止监听端口),在这种情况下,我需要重新连接(重新打开端口)。根据帮助,idHttpServer.OnDisconnect 仅在客户端与服务器断开连接时才会触发。
【问题讨论】:
-
我会说
OnListenException是您所需要的,但这只是一个猜测。 -
@TLama:我不这么认为。根据帮助:当在特定侦听器线程执行期间发生EAbort以外的异常时,在侦听器线程中使用服务器上下文发出OnListenException信号。
-
EAbort在内部使用如果在等待新的客户端连接时关闭侦听套接字,或者如果超出服务器的MaxConnections。侦听线程上的任何其他错误都将触发OnListenException事件。但是,网络连接丢失并不能保证侦听套接字上的错误,因为侦听是本地计算机上的操作,而不是网络上的操作。如果网络适配器在被禁用时被监听,那么被监听套接字报告的可能性很小。 -
客户端连接到服务器,另一方面,如果网络连接丢失,将出错并触发
OnDisconnect事件。 -
要按照您的要求进行操作,您可能必须监视网络适配器本身以查找有关其连接状态的通知。
TIdHTTPServer不会给你这些信息。
标签: delphi delphi-2010 indy indy10