我有以下情况:
Windows下build立的连接是否有超时(本例中为Win8.1)? 我可以改变这个超时吗?
我发现这一点 ,但这似乎并没有回答我build立连接的问题。
默认情况下,build立的TCP连接不会超时( 但由于硬件限制,可能会这样做 )。
应用程序可以使用TCP keepalive机制来检查断开的连接。 在火鸟(> 1.5)TCP保持活动已启用 。
Keepalive“超时”必须在服务器上设置。 Windows中的默认TCP存活时间间隔为2小时(但build议为5分钟) 。 它可以在HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\KeepAliveTimeregistry项中设置。
从上面的链接更多细节:
一个失败的客户端连接将在下列时间间隔后closures:
KEEPALIVE_TIME+ ( KEEPALIVE_PROBES+1)* KEEPALIVE_INTERVAL
在Windows中具有以下相应的registry值:
KEEPALIVE_TIME = KeepAliveTime (default: 7200 seconds) KEEPALIVE_INTERVAL = KeepAliveInterval (default: 1 second) KEEPALIVE_PROBES = TCPMaxDataRetransmissions (default: 5)
但:
保持活动部分默认每两小时发送一次[…]。 即使启用,其他上层协议(如NetBIOS)也会发送自己的保活值。 如果上层协议使用的keepalive时间间隔小于TCP keepalive时间间隔,则永不发送TCP keepalive值。 例如,TCP / IP上的NetBIOS会话每隔60分钟发送一次NetBIOS存活请求。 因此,从不使用为NetBIOS会话启用的TCP保持活动值。
TCP规范没有超时或保活机制。 有一些registry项可以设置为configurationTCP保持活动,但是由实际的应用程序来使用保持活动。 看到这个问题的答案:
在Windows系统上启用全系统TCP保持活动