B_Code网络编程 socket, 网络 2023-10-27 Source Edit History 【网络编程】socket 长连接 文章目录 1234567891011121314151617181920212223242526272829303132333435363738394041BOOL _KeepAlive(SP_SOCKET fd){ //定义结构及宏 struct KeepAlive { u_long onoff; u_long keepalivetime; u_long keepaliveinterval; };#define SIO_KEEPALIVE_VALS _WSAIOW(IOC_VENDOR,4) //KeepAlive实现 KeepAlive inKeepAlive = { 0 }; //输入参数 unsigned long ulInLen = sizeof(KeepAlive); KeepAlive outKeepAlive = { 0 }; //输出参数 unsigned long ulOutLen = sizeof(KeepAlive); unsigned long ulBytesReturn = 0; //keepalive xp以前的系统发送5次,xp之后的系统发送10 inKeepAlive.onoff = 1; inKeepAlive.keepaliveinterval = 5000; //两次KeepAlive探测间的时间间隔 inKeepAlive.keepalivetime = 5000; //开始首次KeepAlive探测前的TCP空闭时间 if (WSAIoctl((SOCKET)fd, SIO_KEEPALIVE_VALS, (LPVOID)&inKeepAlive, ulInLen, (LPVOID)&outKeepAlive, ulOutLen, &ulBytesReturn, NULL, NULL) == SOCKET_ERROR) { LOGT("Set Keep Alive FAILED."); return FALSE; } else { LOGT("Set Keep Alive OK."); return TRUE; }}