我写了一个很简单的SOCKET  TCP服务器端程序,每次编译执行后,这个进程的CPU占用率都是90%以上,郁闷,忘高手指点.代码如下:
UINT TCPServer::TCPServerThread()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup ( wVersionRequested, &wsaData );
if ( err != 0 )
{
return 0;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
 HIBYTE( wsaData.wVersion ) != 1 )
{
WSACleanup ();
return 0;
}
SockSrv = socket( AF_INET, SOCK_STREAM, 0 );
if ( SockSrv == INVALID_SOCKET )
{
//创建SOCKET调试信息
printf( "The create TCP socket error, errcode=%u\n", WSAGetLastError() );
closesocket(SockSrv);
return 0;
}
HostAddr[0]=GetHostIP(); //这个函数是获取本机IP地址的
SOCKADDR_IN addrSrv;
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);
addrSrv.sin_addr.S_un.S_addr=htonl((u_long)HostAddr[0]);
int res;
res = bind( SockSrv, (const sockaddr *)&addrSrv, sizeof(addrSrv) );
if (res == INADDR_ANY)
{
//套接字绑定调试信息
printf("SOCKET bind error, errcode=%u\n", WSAGetLastError());
closesocket(SockSrv);
return false;
}
res = 0;
res = listen ( SockSrv, MAX_LISTEN );
if(res == INADDR_ANY)
{
//套接字监听调试信息
printf("SOCKET listen error, errcode=%u\n", WSAGetLastError());
closesocket(SockSrv);
return 0;
} SOCKET SockConn;
SOCKADDR_IN AddrClient;
int len=sizeof(AddrClient);
while(1)
{
SockConn=accept(SockSrv,(struct sockaddr*)&AddrClient,&len);
if(SockConn != INVALID_SOCKET )
{
n++;
printf("n=%d\n",n);
}
AfxBeginThread(TcpAcceptThread,(LPVOID)SockConn);
closesocket(SockSrv);
}
return 0;
}UINT TCPServer::TcpAcceptThread(LPVOID pParam)
{
return 0;
}