首页 > 代码库 > TCP连接在没有数据交互式判断连接断开
TCP连接在没有数据交互式判断连接断开
非阻塞模式下,建立连接没有调用send()和recv()进行数据交互的情况怎么判断服务端连接主动断开?
通过recv()函数,没有数据时返回-1,服务端断开返回0,通过返回0判断服务端是否断开
unsigned long u32NonBlock = 1;
if ( ioctlsocket(pDlg->m_s32Socket, FIONBIO, &u32NonBlock) ) // 非阻塞
{
closesocket(pDlg->m_s32Socket);
pDlg->m_s32Socket = -1;
continue;
}
CHAR sTemBuf[2] = {0};
INT s32Ret = recv(pDlg->m_s32Socket,sTemBuf, sizeof(sTemBuf), 0);
if (0 == s32Ret) // 判断服务器是否主动断开 断开返回0
{
closesocket(pDlg->m_s32Socket);
pDlg->m_s32Socket = -1;
}
u32NonBlock = 0;
if ( ioctlsocket(pDlg->m_s32Socket, FIONBIO, &u32NonBlock) ) // 阻塞
{
closesocket(pDlg->m_s32Socket);
pDlg->m_s32Socket = -1;
continue;
}
TCP连接在没有数据交互式判断连接断开
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。