xar*_*ria 10 sockets visual-c++
我正在使用winsock和TCP.我已将KeepAlive选项设置如下
int aliveToggle = 1;
setsockopt(mySocket,SOL_SOCKET,SO_KEEPALIVE,(char*)&aliveToggle, sizeof(aliveToggle));
Run Code Online (Sandbox Code Playgroud)
但是如何指定Keep aLive时间和间隔?
我正在使用在Windows 7上运行的VC++.
Eug*_*tte 18
从c/c ++开始,您应该能够使用SIO_KEEPALIVE_VALS来控制超时.您不能使用setsockopt,但您应该能够使用WSAIoctl.请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/dd877220%28v=vs.85%29.aspx
这是一个例子http://read.pudn.com/downloads79/ebook/301417/Chapter09/SIO_KEEPALIVE_VALS/alive.c__.htm
键 \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Tcpip\Parameters 下的两个每个接口的注册表设置控制 TCP/IP 保持活动的行为:
KeepAliveTime 值指定 TCP 连接在没有流量的情况下处于空闲状态的时间,然后 TCP 发送保持活动数据包。默认值为 7,200,000 毫秒 (ms) 或 2 小时。
KeepAliveInterval 值指示在发送保持连接之后在重复保持连接之前等待响应的毫秒数。如果未收到响应,TCP/IP 堆栈将继续在此时间间隔发送保持连接,直到收到响应或堆栈达到 TCPMaxDataRetransmissions 注册表项中指定的数据包重试限制。KeepAliveInterval 默认为 1 秒 (1000 .
默认情况下禁用 TCP 保持连接,但 Windows 套接字应用程序可以使用 setsockopt 函数在每个连接的基础上启用它们。
注意如果开发人员选择在特定连接上使用 TCP 保持活动消息,则这些消息的时间由前面描述的注册表值指定。不可能对不同的保持活动请求使用不同的时间。