如何捕获 telnet 断开连接(Delphi Indy telnet)?

How to catch telnet disconnection (Delphi Indy telnet)?

我在 Delphi 程序中使用 Indy telnet 客户端组件。 现在我需要捕获 telnet 断开连接(例如,当其他一些程序连接到同一主机时,我的连接断开了)。 如何捕捉?

您可以使用 OnStatus 事件,检查 hsDisconnected 状态。

此时,当连接意外关闭时,TIdTelnet 不会触发 OnDisconnectOnStatus 事件。这是一个已知问题,在 Indy 的问题跟踪器中有一个开放票证:

#118: TIdTelnet needs to trigger OnDisconnect or OnStatus when disconnected

在修复此问题之前,您必须修改 TIdTelnet 的源代码以挂接到其内部读取线程,或者至少将 OnTerminate 处理程序分配给它,以检测它何时停止 运行.