18,356
社区成员
发帖
与我相关
我的任务
分享
struct tcp_keepalive {
u_long onoff;
u_long keepalivetime;
u_long keepaliveinterval;
};
#define SIO_KEEPALIVE_VALS _WSAIOW(IOC_VENDOR,4)
void SetKeepAlive(SOCKET s)
{
tcp_keepalive live,liveout;
live.keepaliveinterval = 1000;
live.keepalivetime = 8000;
live.onoff = TRUE;
int op=1;
int ret = setsockopt(s,SOL_SOCKET,SO_KEEPALIVE,(char*)&op,sizeof(int));
if(ret == 0)
{
DWORD dw;
if(WSAIoctl(s,SIO_KEEPALIVE_VALS,&live,sizeof(live),&liveout,sizeof(liveout),&dw,NULL,NULL)== SOCKET_ERROR)
{
}
}
else
{
}
}
struct PackHeader
{
int m_type;//数据类型,是心跳包还是什么
size_t m_len;//数据段的长度,这样你还可以一并解决粘包额问题
};