delphi – 如何处理网络丢弃和Indy IdTCPServer

前端之家收集整理的这篇文章主要介绍了delphi – 如何处理网络丢弃和Indy IdTCPServer前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我用IdTCPServer组件创建了一个Client / Server应用程序.客户端在应用程序的整个生命周期中连接并维护持久连接.如果网络连接断开(由于客户端连接无线空中卡,这种情况经常发生),客户端将自动重新连接.一切正常.

我的问题是处理服务器上与丢失连接相对应的套接字.它们不检测网络丢失并断开连接.在阅读了几篇相关文章后,我了解到服务器无法知道连接是否被丢弃.它必须等待一些事件才能找到它.

所以我的问题是,我是否应该在我的服务器中构建一些机制来定期“处理”掉线连接的套接字?如果是这样,怎么样?我认为一种方法是循环遍历所有连接并尝试向它们发送数据.我发现这将触发所需的“事件”.

解决方法

从客户端定期发送到服务器的某种心跳或ping信号可用于使服务器端会话保持活动状态.如果信号停止,并且超时间隔过去,则服务器可以假定客户端已丢失连接.

(如果服务器只是使用套接字连接将数据发送回客户端,则服务器无法知道客户端是否收到了数据.数据可能位于中间位置.)

猜你在找的Delphi相关文章