【问题标题】:How to know server connection is lost in client side如何知道服务器连接在客户端丢失
【发布时间】:2014-07-24 17:50:32
【问题描述】:

我有一个在 winforms 中写入的 tcp 服务器和一个在 android 中的客户端。我将设备连接到无线网络,然后断开服务器与该网络的连接。然而,客户端继续监听服务器一段时间,然后关闭其套接字。当服务器与网络断开连接时,如何告诉客户端关闭套接字?

【问题讨论】:

  • 如果你的服务器关闭过程是计划好的,你可能应该实现一个方法,它在服务器关闭之前执行。此方法将向所有连接的客户端广播他们需要关闭其套接字并作为回报关闭服务器端客户端的套接字。如果没有计划并且服务器自行关闭,您可能没有其他机会,只能在客户端等待超时
  • 不,这不是计划关闭。必须等到套接字自行关闭:/ 感谢您的回复。
  • 我刚刚发现这个链接解释了一些方法。它适用于客户端在服务器端退出,但您可以在服务器和客户端上实现这些,因此双方都会处理不正确的关闭 Socks。 blog.stephencleary.com/2009/05/…

标签: c# android tcp


【解决方案1】:

它发生的原因(如果我正确理解问题的话)是没有固有的方法可以知道连接已关闭,除非您尝试发送包。所以在你的客户端,如果你尝试通过连接发送一个空包,它会立即报告连接是否已经关闭。

这就是 Heartbeat 存在的原因,您可以配置您的套接字以使用它们,或者您可以让您的客户端定期(或在需要时)尝试发送一个空包并报告连接状态。

CodeProject 上有一篇关于此的优秀文章,see here

【讨论】:

    猜你喜欢
    • 2018-02-20
    • 1970-01-01
    • 2017-02-11
    • 2021-12-22
    • 2022-01-20
    • 2019-02-23
    • 1970-01-01
    • 2013-05-10
    • 2015-04-04
    相关资源
    最近更新 更多