本人期望写一个非阻塞的Server端来解决阻塞模式下accept()占用CPU100%的问题,可是在运用了WSAEventSelect模式,CPU依然占用100%。
不知如何解决这个问题,
请各位大侠帮看下我的代码。 SocketServer = socket(AF_INET,SOCK_STREAM,0);   //Server端 socket
ret = bind(SocketServer,(LPSOCKADDR)&ServerAddr,sizeof(ServerAddr));
// 主要看以下代码了: 第一次写WSAEventSelect
WSAEVENT AcceptEvent = WSACreateEvent();  // 创建监听事件对象
// 与socket关联,并注册事件类型
ret = WSAEventSelect(SocketServer,AcceptEvent,FD_ACCEPT | FD_CLOSE);
if (ret == SOCKET_ERROR)
{
AfxMessageBox("Server WSAEventSelect Set Errror!");
return 0;
} ret = listen(SocketServer,5);  // 设置等待连接,连接最大数为5
if (ret == SOCKET_ERROR)
{
return 0;
}

DWORD index;
_WSANETWORKEVENTS networkEvents;

while (1)           //  调试发现在这部不停循环造成CPU100%   
{
// 等待网络事件
index = WSAWaitForMultipleEvents(2,&AcceptEvent,FALSE,WSA_INFINITE,FALSE);
// 找出事件类型
WSAEnumNetworkEvents(SocketServer,AcceptEvent,&networkEvents); if (networkEvents.lNetworkEvents & FD_ACCEPT)
{

if (networkEvents.iErrorCode[FD_ACCEPT_BIT] != 0)
{
// 接受连接时间失败
break;
}

SOCKET SocketMSG = accept(SocketServer,NULL,NULL);
if (SocketMSG == INVALID_SOCKET)
{
// accept() Set Error!
AfxMessageBox("accept() Set Error!");
break;
}

if()  // 条件满足  Send  自定义消息  
   
}

}对socket编程不甚了解,查找资料写到这一步,
对于我出现的问题,和期望的结果应该如何解决呢?