代码之家  ›  专栏  ›  技术社区  ›  M Schenkel

如何处理网络丢弃和indy idtcpserver

  •  8
  • M Schenkel  · 技术社区  · 14 年前

    我用idtcpserver组件创建了一个客户机/服务器应用程序。客户机在应用程序的整个生命周期中连接并维护一个持久的连接。如果网络连接中断(由于客户机连接无线空调而频繁发生这种情况),客户机将自动重新连接。这一切都很好。

    我的问题是处理服务器上与丢失的连接相对应的套接字。他们没有检测到网络断开连接。在阅读了几篇相关文章之后,我了解到服务器无法知道是否断开了连接。它必须等待一些事件来发现这一点。

    所以我的问题是,我应该在服务器中构建一些机制来定期“处理”掉连接的套接字吗?如果是,怎么办?我想有一种方法是循环访问所有连接并尝试发送数据。我发现这会触发需要的“事件”。

    1 回复  |  直到 14 年前
        1
  •  6
  •   mjn anonym    14 年前

    可以使用定期从客户机发送到服务器的某种心跳或ping信号来保持服务器端会话的活动状态。如果信号停止,并且超时间隔结束,服务器可以假定客户机已断开连接。

    (如果服务器只是使用套接字连接将数据发送回客户机,则服务器不知道客户机是否接收到数据。数据可能在中间。