64,637
社区成员
发帖
与我相关
我的任务
分享
/*发送心跳包*/
int SetSocketHeart(int nSocketfd)
{
int nTimes = 3; ///< 探测次数
int nInteval = 5; ///< 发送心跳间隔
//int nKeepIdle = 60; ///< 首次探测开始前的tcp无数据收发空闲时间
//int nStopTime = 60; ///< 心跳持续时间
char szHeart[] = "How are you?";
char szBuf[4] = {0};
while (nTimes > 0)
{
/*发送心跳包*/
send(nSocketfd, szHeart, strlen(szHeart), 0);
Sleep(nInteval);
/*接收心跳回复,后续考虑用线程接收数据*/
recv(nSocketfd, szBuf, strlen(szBuf), 0);
if (strcmp(szBuf, "Yes") == 0)
{
break;
}
else
{
if (1 == nTimes)
{
//connect();断线重连
nTimes = 3;
}
nTimes--;
continue;
}
}
return 0;
}