while (1)
{ GetExitCodeThread(handle,&m);//退出码
if (CutListenThread==1)//通过外部全局变量控制线程退出
{
AfxMessageBox("监听线程终止");
::ExitThread(m);
//break;
}
int len = sizeof(cli);
int err = select(0,&fdread,NULL,NULL,&tv);
if (err>0)
{
if (FD_ISSET(sListen,&fdread))
{
sAccept = accept(sListen,(struct sockaddr* )&cli,&len);
if (sAccept==INVALID_SOCKET)
{
int error5 = WSAGetLastError();
CString error5_str5;
error5_str5.Format("%d",error5);
AfxMessageBox("接受连接错误,错误代码:"+error5_str5);
return 1;
}
CreateThread(NULL,0,DataThread,(LPVOID)sAccept,0,NULL);
}
}
Sleep(100);
}
tv.tv_sec=0;
tv.tv_usec=0;
fd_set fdread;
FD_ZERO(&fdread);
FD_SET(sListen,&fdread); while (1)
{ GetExitCodeThread(handle,&m);//退出码
if (CutListenThread==1)//通过外部全局变量控制线程退出
{
AfxMessageBox("监听线程终止");
::ExitThread(m);
//break;
}
int len = sizeof(cli);
int err = select(0,&fdread,NULL,NULL,&tv);
if (err>0)
{
if (FD_ISSET(sListen,&fdread))
{
sAccept = accept(sListen,(struct sockaddr* )&cli,&len);
if (sAccept==INVALID_SOCKET)
{
int error5 = WSAGetLastError();
CString error5_str5;
error5_str5.Format("%d",error5);
AfxMessageBox("接受连接错误,错误代码:"+error5_str5);
return 1;
}
CreateThread(NULL,0,DataThread,(LPVOID)sAccept,0,NULL);
}
}
else{ int error6 = WSAGetLastError();
CString error6_str;
error6_str.Format("%d",error6);
AfxMessageBox("select错误:"+error6_str);
return 1;
}
Sleep(100);
}
return 0;
}