增加TCP套接字超时与手动重试套接字连接之间有区别吗?

时间:2018-04-10 21:53:43

标签: sockets tcp

我继承了尝试建立TCP套接字的代码,以诊断设备与某些网址的连接。在某些情况下,TCP套接字将在我们设置的超时阈值后超时。我的问题是,手动重试套接字连接与仅增加超时阈值之间是否存在差异?

请记住,这是在正在安装和配置的设备上使用的诊断工具,因此它们的网络配置可能会在套接字连接中发生变化。 TCP套接字是否会考虑网络更改(如网关,DNS或本地IP)并在超时之前建立连接(假设网络更改在套接字通常超时之前完成)或者是否需要建立新的套接字连接?或者增加超时与手动重试套接字连接之间没有真正区别吗?

1 个答案:

答案 0 :(得分:2)

由于多种原因可能会发生超时,但想象下一种情况:

  1. 数据包已发送
  2. 主机和设备之间发生了一些奇怪的故障,数据包完全丢失(丢弃)
  3. 你得到超时
  4. 现在,您已经增加了超时 - 这不会改变情况

    如果您有重试 - 数据包将在超时的情况下发送,如果失败是暂时的,那么您最终将建立连接

    结论 - 超时应设置为一些合理但非常小的值,并且您应该进行多次重试,同样是一些合理的数字。