18,363
社区成员




//线程函数中..
fd_set RSet;
FD_ZERO(&RSet);
FD_SET (hSocket,&RSet);
struct timeval tv;
tv.tv_sec = 30;
tv.tv_usec = 0;
int nRet = select(hSocket,&RSet,NULL,NULL,&tv); //nRet 返回1
if (nRet > 0)
{
if (FD_ISSET(hSocket,&RSet)) //判断为假,recv无法执行
{
nRet = recv(hSocket,...)
}
]
//线程函数中..
fd_set errorfds;
FD_ZERO(&errorfds);
FD_SET (hSocket,&errorfds);
fd_set RSet;
FD_ZERO(&RSet);
FD_SET (hSocket,&RSet);
struct timeval tv;
tv.tv_sec = 30;
tv.tv_usec = 0;
int nRet = select(hSocket,&RSet,NULL,&errorfds,&tv); //nRet 返回1
if (nRet > 0)
{
if (FD_ISSET(hSocket,&errorfds)) //判断为假,弹对话框无法执行
{
AfxMessageBox("error");
}
if (FD_ISSET(hSocket,&RSet)) //判断为假,recv无法执行
{
nRet = recv(hSocket,...)
}
]
int nRet = select(hSocket+1,&RSet,NULL,NULL,&tv); //nRet 返回1