1

我使用 indy10 进行通信,有时当客户端断开连接时会引发异常,我想知道断开连接(TIdContext)的最安全方法是什么?

我应该在 OnDisconnect 上做什么甚至类似的事情?

谢谢。

4

2 回答 2

3

引发异常是正常行为。Indy 旨在大量使用异常,不仅用于错误处理,还用于内部通知等。 当检测到连接完成OnDisconnect时触发,因为客户端断开连接(并为您处理了异常)或因为您的处理程序代码中发生了未捕获的异常。无论哪种方式,用于执行您需要的任何清理。 事件处理程序退出后将为您关闭套接字。TIdTCPServerTIdTCPServerOnExecuteOnDisconnectTIdTCPServerOnDisconnect

于 2011-02-19T01:45:42.067 回答
0

我只想添加一些关于我知道的套接字内部工作 (TCP) 的内容:

服务器客户端所做的所有事情都是相互发送数据。服务器客户端不同,因此他是被动的,直到任何客户端不首先发送连接请求。但是如果客户端想要或被迫断开连接,所要做的就是停止向服务器发送数据。要优雅地关闭连接,客户端可能会发送有关此事件的特殊数据,例如通过电话说“goodbay”,但这不是绝对必需的。简单地想象一下从你(客户端)到任何服务(服务器)的电话)。您以“你好”开始对话,服务人员响应。如果您不小心按了手机上的重置,通话将丢失。但服务仍然继续他的工作。你可以再次调用它。没有什么不好的事情发生。

您需要关心的只是稳定和正确的客户端服务器本身的工作。检查不正确的发送和接收数据。尝试在客户端需要时重新连接。如果客户端内部抛出一些异常,则必须根据需要对其进行处理,并且当当前连接因此类强制事件而丢失时是正常情况。

Remy Lebeau已经回答了其他所有问题。

于 2011-06-19T19:22:32.173 回答