应该是很简单的问题,怎么判断一个socket是否处于连接状态 如题! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个应该很难区别把你可以通过判断socket函数操作的返回值或者判断指定socket是否有效试试. //m_hSocket 是SOCKET 你所要判断的BOOL HasConnectionDropped(void){ BOOL bConnDropped = FALSE; INT iRet = 0; BOOL bOK = TRUE; if (m_hSocket == INVALID_SOCKET) return TRUE; struct timeval timeout = { 0, 0 }; fd_set readSocketSet; FD_ZERO(&readSocketSet); FD_SET(m_hSocket, &readSocketSet); iRet = ::select(0, &readSocketSet, NULL, NULL, &timeout); bOK = (iRet > 0); if(bOK) { bOK = FD_ISSET(m_hSocket, &readSocketSet); } if(bOK) { CHAR szBuffer[1] = ""; iRet = ::recv(m_hSocket, szBuffer, 1, MSG_PEEK); bOK = (iRet > 0); if(!bOK) { INT iError = ::WSAGetLastError(); bConnDropped = (( iError == WSAENETRESET) || (iError == WSAECONNABORTED) || (iError == WSAECONNRESET) || (iError == WSAEINVAL) || (iRet == 0)); } } return(bConnDropped);} 串口接收的数据如何与画圆实时联系起来???急!!! 程序的升级 急! 话框添加菜单栏,,熟悉xtream的请进 关于WNetOpenEnum()的递归问题 VC6没有标准头文件:strlib.h? 文件重命名莫名其妙的数据丢失 char* p[1]={&str}是什么意思呀????????? OnCaptureChanged的奇怪问题 以下是中大软件学院的专用上课书,现以七折出售,全新 碰到妖怪了,程序运行到一个地方没有相应,设了断点畅通无阻直到结束,什么道理?是不是VC的bug?? 如何将内存DC的内容保存为一个CBitmap? 各位 得到一个CBitmap的对象指针 怎么
你可以通过判断socket函数操作的返回值或者判断指定socket是否有效试试.
BOOL HasConnectionDropped(void)
{
BOOL bConnDropped = FALSE;
INT iRet = 0;
BOOL bOK = TRUE;
if (m_hSocket == INVALID_SOCKET)
return TRUE; struct timeval timeout = { 0, 0 };
fd_set readSocketSet;
FD_ZERO(&readSocketSet);
FD_SET(m_hSocket, &readSocketSet);
iRet = ::select(0, &readSocketSet, NULL, NULL, &timeout);
bOK = (iRet > 0);
if(bOK)
{
bOK = FD_ISSET(m_hSocket, &readSocketSet);
}
if(bOK)
{
CHAR szBuffer[1] = "";
iRet = ::recv(m_hSocket, szBuffer, 1, MSG_PEEK);
bOK = (iRet > 0);
if(!bOK)
{
INT iError = ::WSAGetLastError();
bConnDropped = (( iError == WSAENETRESET) ||
(iError == WSAECONNABORTED) ||
(iError == WSAECONNRESET) ||
(iError == WSAEINVAL) ||
(iRet == 0));
}
}
return(bConnDropped);
}