关于winsock keepalive使用的几点疑问(基于TCP)
1、如果是服务端希望检测客户端的非正常掉线,KeepAlive属性是在服务端代码设置(连接建立成功之后)还是在客户端的代码设置呢?或者是两端都要设置?
2、关于结构体
struct tcp_keepalive {
u_long onoff;
u_long keepalivetime;
u_long keepaliveinterval;
};
不是非常明白keepalivetime和keepaliveinterval的含义,英文比较菜,MSDN的解释如下:
The keepalivetime member specifies the timeout, in milliseconds, with no activity until the first keep-alive packet is sent. The keepaliveinterval member specifies the interval, in milliseconds, between when successive keep-alive packets are sent if no acknowledgement is received.
可否认为是没经历keepaliveinterval时间,重新发送一次心跳包,一次成功的心跳包返回后,keepalivetime时间内不再发送心跳包?
3、对于完成端口而言,如果接收到成功的心跳包,GetQueuedCompletionStatus是否会返回呢?如果会返回的话,返回值为TRUE,lpNumberOfBytes 得到的值为0? 如果心跳包确认超时的话,GetQueuedCompletionStatus会得到返回值FALSE?
不知道说清楚了没,希望大家能够帮我解惑一下,不胜感激!
...全文
相关推荐
WinSock_TCP_keepalive.zip_ keepalive_Keepalive_select recv_tcp
该项目实现了基于WinSock的TCP keepalive机制,通过启用SO_KEEPALIVE选项并调用WSAIoctl配置心跳间隔与重试次数,自动检测对端连接状态。可用于识别客户端异常断开或网络中
WinSock TCP keepalive的机理及使用
WinSock TCP keepalive的机理及使用
WinSock_TCP_keepalive.rar_Keepalive_tcp 心跳_心跳 C_心跳包 c+_心跳包机制
在C和C++编程中,可以利用WinSock API来实现TCP Keepalive功能。WinSock是Windows操作系统上的网络编程接口,提供了设置TCP Keepalive参数的方法。
TCP链接异常断开检测程序
在实际应用中,正确配置和使用KEEPALIVE选项是保证TCP连接可靠性和健壮性的重要步骤。
Delphi之TClientSocket和TServerSocket进行TCP长连接通讯使用KeepAlive自动发送心跳包检测断网
本文介绍Winsock2.h的Pascal语言版本,涵盖Windows Sockets API定义、网络编程接口、TCP/IP协议族支持、客户端与服务器端程序实现。客户端程序实现连接、数据传输、断开连


网络编程
