VC6 sp6 控制台,项目。
Win2000 sp4程序是 c/s 结构中的 server 。 
采用的  select 模型。问题:程序偶尔会停止 执行,点一下,窗口, 敲回车又继续了.
      不知道如何避免, 请帮忙看看, 非常感谢!主循环代码。
while(1) 

read_fds = master; // copy it 
if (select(fdmax+1, &read_fds, NULL, NULL, NULL) == -1) 

perror("select"); 
exit(1); 

if (FD_ISSET (listener, &read_fds))
{
addrlen = sizeof(remoteaddr); 
if ((newfd = accept(listener, (struct sockaddr *)&remoteaddr,
&addrlen)) == -1) 

perror("accept"); 

else
{
FD_SET(newfd, &master); // add to master set 
if ((int)newfd > fdmax) 
fdmax = newfd ;  // keep track of the maximum  CreateClientEvnElement (newfd, remoteaddr.sin_addr.s_addr) ;
}
}
pClient = GetClientEvnList () ;
while (pClient)
{
if (FD_ISSET (pClient->sock, &read_fds))
{
recvClientDataRtn = RevcClientData (pClient) ;
// 
if (recvClientDataRtn > 0)
{
printf ("recv data len : %d\n", recvClientDataRtn) ;
}
else if (recvClientDataRtn == CLIENTEVN_RECVDATA_UNFINISHED)
{
// do nothing .
printf ("CLIENTEVN_RECVDATA_UNFINISHED !\n") ;
}
else 
{
switch (recvClientDataRtn) 
{
case CLIENTEVN_CONNECT_CLOSE:
case CLIENTEVN_RECVDATA_SOCKERROR :
// delete client 
closesocket (pClient->sock); 
FD_CLR(pClient->sock, &master);
pClientForDel = pClient->next ;
DeleteClientEvnElement (pClient) ;
pClient = pClientForDel ;
continue ;
break;

case CLIENTEVN_RECVDATA_BUFOVER :
printf ("CLIENTEVN_RECVDATA_BUFOVER !\n") ;
break ;
case CLIENTEVN_RECVDATA_TPKTERROR :
printf ("CLIENTEVN_RECVDATA_TPKTERROR !\n") ;
break ;
default:
printf ("UNKNOW error ! : %d\n", recvClientDataRtn) ;
}
}
}
pClient = pClient->next ;
}
ReleaseClientEvnList () ;