据我所知,TCP套接字上的Keep-alive有助于了解套接字是否刚刚打开,并且两个套接字之间的连接实际上是否存在。所以,我有几个问题想询问有关Winsocks2中Keepalive的用法:
答案 0 :(得分:1)
在发送邮件之前,保持活动状态会检测连接另一端的服务器(或网络中的物理链路是否已关闭)是否已经死亡。否则,只有在您实际尝试发送数据时才会检测到断开连接,如果由于某种原因您的连接空闲可能需要很长时间。
答案 1 :(得分:1)
当keep-alive选项检测到死套接字时会发生什么?
重置连接,任何读取或写入都会出现“连接重置”错误。请注意,默认情况下,keepalive处于关闭状态,默认情况下启用时仅以两小时的间隔运行。
如果没有实际使用send和recv,我如何检查连接是否存在?
你做不到。故意设计TCP / IP不具有“拨号音”。它的工作方式要好得多。这是它取代所有先前协议的主要原因,例如SNA。
如果我必须使用send和recv函数,那么首先使用keep-alive的重点是什么?
recv()
不会告诉您连接断开的情况。它可能会永远阻止。你可以使用读取超时,但是你必须决定多少时间。或者,您可以实现应用程序级PING。