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

Sockets 增加TCP套接字超时与手动重试套接字连接之间有区别吗?,sockets,tcp,Sockets,Tcp,我继承了一段代码,该代码试图建立一个TCP套接字来诊断设备与特定URL的连接。在某些情况下,TCP套接字将在我们设置的超时阈值之后超时。我的问题是,手动重试套接字连接与仅仅增加超时阈值之间是否有区别 记住,这是一个正在安装和配置的设备上使用的诊断工具,因此它们的网络配置可能会在套接字连接的中间发生变化。TCP套接字会考虑网络更改(如网关、DNS或本地IP)并在超时之前建立连接(假设在套接字正常超时之前完成网络更改),还是有必要建立新的套接字连接?或者,增加超时与手动重试套接字连接之间是否没有真正

我继承了一段代码,该代码试图建立一个TCP套接字来诊断设备与特定URL的连接。在某些情况下,TCP套接字将在我们设置的超时阈值之后超时。我的问题是,手动重试套接字连接与仅仅增加超时阈值之间是否有区别


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

超时可能是由于多种原因造成的,但想象一下下一种情况:

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

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


    结论-超时值应设置为合理但非常小的值,并且您应该有多次重试,再次设置为合理的次数。

    超时可能是由于多种原因造成的,但请想象下一种情况:

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

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


    结论-应该将超时设置为合理但非常小的值,并且您应该有多次重试,再次设置合理的次数。

    这是一个非常明显的答案,我不知道为什么我没有考虑这个问题。谢谢你的澄清!这是一个如此明显的答案,我不知道为什么我没有想到这一点。谢谢你的澄清!