2014-01-19 77 views
1

据我所知,TCP套接字上的Keep-alive有助于了解套接字是否不仅仅是打开的,而且两个套接字之间的连接实际上是活动的。所以,我有几个问题我想关于保持连接的Winsocks2使用来电咨询:什么时候TCP套接字需要保持活动状态?

  • 当保活选项检测死插座会发生什么?

  • 如何在不实际使用 sendrecv的情况下检查连接是活着还是死亡?如果我必须使用sendrecv功能,然后使用 首先使用保持活动的意义何在?

回答

1

当keep-alive选项检测到死亡套接字时会发生什么?

连接重置,任何读取或写入都会出现“连接重置”错误。请注意,keepalive默认情况下处于关闭状态,启用时默认情况下每隔两小时运行一次。

如何在没有实际使用send和recv的情况下检查连接是活着还是死亡?

你不行。 TCP/IP被故意设计为不具有“拨号音”。它的工作方式好得多。这是为什么它取代了像SNA这样的所有先前协议的主要原因。

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

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

1

保持活动检测是否在连接的另一端(或物理链路,如网络是向下)的服务器发送邮件之前已经死亡。否则,只有在您实际尝试发送数据时才会检测到断开连接,如果您的连接由于某种原因而处于空闲状态可能需要很长时间。

相关问题