作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我已经使用 IdTCPServer 组件创建了一个客户端/服务器应用程序。客户端连接并在应用程序的整个生命周期中保持持久连接。如果网络连接断开(这种情况经常发生,因为客户端使用无线无线网卡连接),客户端将自动重新连接。这一切都很好。
我的问题是处理服务器上与丢失连接对应的套接字。他们不会检测到网络中断并自行断开连接。在阅读了几篇相关文章后,我了解到服务器无法知道连接是否断开。它必须等待某个事件才能发现这一点。
所以我的问题是,我是否应该在我的服务器中构建某种机制来定期“处理”连接断开的套接字?如果是这样,怎么办?我认为一种方法是循环遍历所有连接并尝试向它们发送数据。我发现这会触发所需的“事件”。
最佳答案
某种心跳或 ping 信号,从客户端定期发送到服务器,可以用来保持服务器端 session 的事件。如果信号停止,并且超时间隔过去,服务器可以假定客户端已丢失连接。
(如果服务器简单地使用套接字连接将数据发送回客户端,服务器无法知道客户端是否收到了数据。数据可能在中间的某个地方。)
关于delphi - 如何处理网络丢失和 Indy IdTCPServer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3343844/
我是一名优秀的程序员,十分优秀!