TCP插座需要何时需要保持贴生

When is Keep-alive required for TCP Sockets?

本文关键字:何时需 插座 TCP      更新时间:2023-10-16

据我所知,据我所知,在TCP套接字上的距离很有帮助,有助于知道插座是否不仅打开,并且在两个插座之间实际上还活着连接。因此,我想询问有关在Winsockss中使用Keepalive的几个问题:

  • 当保持距离选项检测到死插座时会发生什么?

  • 我如何检查连接是否活着还是死亡,而无需实际使用发送和RECV?如果我必须使用发送和RECV函数,则首先使用饲养的意义是什么?

当保持现象选项检测到死窝时会发生什么?

连接是重置的,任何读取或写入都会获得"连接重置"错误。请注意,默认情况下关闭了keepalive,并且启用时仅以两个小时的间隔运行时。

我如何在不使用Send and RecV的情况下检查连接是否活着还是死亡?

你不能。TCP/IP故意设计为"拨号音"。这样可以更好地工作。这是为什么它取代所有先前协议(例如SNA)的主要原因。

如果我必须使用send and recv函数,那么首先使用keep-alive有什么意义?

recv()不会告诉您有关断开的连接。它可能永远阻止。您可以使用阅读超时,但是您必须决定多少时间太多了。或者,您可以实现应用程序级ping。

保持活着检测是否在连接的另一端(或网络诸如网络之类的物理链接)在发送消息之前已经死亡。否则,仅在您实际尝试发送数据时才能检测到断开连接,如果您的连接出于某种原因可能需要很长时间。