Socket为什么会不停地Accept?
「已注销」 2004-04-26 10:28:27 大家帮忙看看这段代码:
放在主线程中没什么问题,但是如果放在子线程中就会不停地Accept错误(就是在最后几行那里不停地continue)
WSADATA WSAData;
if(WSAStartup(MAKEWORD(2,2), &WSAData)!=0)
{
Application->MessageBoxA("Socket 初始化失败!","错误",MB_ICONERROR+MB_OK);
ExitProcess(0);
}
sockaddr_in addr;
int port=2121;
int SockErr;
sckServer=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
addr.sin_family=AF_INET;
addr.sin_port=htons(port);
addr.sin_addr.s_addr=htonl(INADDR_ANY);
//addr.sin_addr.s_addr=htonl(INADDR_ANY);
if(bind(sckServer,(SOCKADDR*)&addr,sizeof(addr))==SOCKET_ERROR)
{
Application->MessageBoxA("Socket 初始化失败!","错误",MB_ICONERROR+MB_OK);
ExitProcess(0);
}
if(listen(sckServer,50)==SOCKET_ERROR)
{
Application->MessageBoxA("Socket 初始化失败!","错误",MB_ICONERROR+MB_OK);
ExitProcess(0);
}
while(true)
{
SOCKET sckConn;
sockaddr saConn;
int iAddrLen;
bool bAccept=false;
if((sckConn=accept(sckServer,&saConn,&iAddrLen))==INVALID_SOCKET)
{
continue;
}
..........
}