【问题标题】:Handling Socket Exception 10060 on already connected clients在已连接的客户端上处理 Socket Exception 10060
【发布时间】:2013-11-19 21:51:39
【问题描述】:

Socket Exception 10060:连接尝试失败,因为连接方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应

我读过的关于 Socket Exception 10060 的绝大多数问题都与连接有关。我的服务器遇到此异常的第二部分“已建立连接失败,因为连接的主机未能响应”

我有大约 150 个持久的客户端套接字连接。我的服务器每隔一段时间就会在其中一些连接上收到 Socket Exception 10060。我会说大约每 5 分钟 1-3 次。目前,当我在套接字上遇到此异常时,我会断开该套接字。我注意到在 5 秒到 3 分钟内,客户端会重新连接。

可以说客户端实际上有连接问题并且没有响应吗?

当我收到 Socket Exception 10060 时,我应该断开客户端套接字吗?或者我应该监控特定客户端/套接字接收 Socket Exception 10060 的次数并在 x 次出现后断开它们?

【问题讨论】:

  • 发布您的代码怎么样?更好的是,一个独立的小例子,我们可以轻松地复制它?
  • 这不容易复制,因为它只发生在我大约 1/3 的客户身上。此外,客户端是嵌入式设备。我更感兴趣的是我应该如何应对这个异常。

标签: c# .net sockets


【解决方案1】:

如果只是某些客户端且仅在某些时候出现,那么似乎是这些客户端存在连接问题导致了问题。

如果是这种情况,并且客户端应对这种情况并成功重新连接,那么通过断开连接处理异常是正确的方法。

只有在一定数量的连续异常之后断开连接才是明智的,因为奇数异常可能只是暂时的问题。此外,如果关闭和重新连接的成本(就所花费的时间而言)相对较高,那么继续这样做可能会很昂贵。

【讨论】:

    猜你喜欢
    • 2016-05-24
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    相关资源
    最近更新 更多