我要的是API编程,尤其是实现WSAAccept()的非阻塞,下面是我写的socket接收程序怎么非阻塞的设置没有起作用WSAAccept()还是阻塞在那里,制定的消息也没收到,谁能给我一个详细的介绍,如果有例子程序就更好了,我的东西多的话可以发到我油箱里[email protected],谢谢
sockaddr_in localAddr;
int localAddrSize = sizeof(localAddr);
SOCKET m_listenSock;
if (m_listenSock)
::closesocket(m_listenSock);
m_listenSock = ::WSASocket(AF_INET, SOCK_STREAM, 0, NULL, NULL, WSA_FLAG_OVERLAPPED);
if (m_listenSock==INVALID_SOCKET)
return 0;
localAddr.sin_family = AF_INET;
localAddr.sin_port = htons(m_port);
localAddr.sin_addr = GetLocalIP();
if (bind(m_listenSock, (sockaddr*)&localAddr, localAddrSize)<0)
return 0;listen(m_listenSock, 5);
HANDLE hEvent = ::CreateEvent(NULL, FALSE, FALSE, NULL);
int result = ::WSAEventSelect(m_listenSock, hEvent, FD_CONNECT|FD_READ);
result = ::WSAGetLastError();
while(mm->m_listeningTCP)
{
SOCKET msgsocket = ::WSAAccept(mm->m_listenSock, (sockaddr*)&localAddr, &localAddrSize, NULL, NULL);
::WaitForSingleObject(hEvent, INFINITE);
if(msgsocket==INVALID_SOCKET)
continue;
else 
{
BYTE buf[1024];
int rval = recv(msgsocket, (char*)buf, sizeof(buf), 0);
if (rval<=0)
::MessageBox(NULL, "OK", NULL, NULL);
closesocket(msgsocket);
}
closesocket(m_listenSock);
m_listenSock = 0;
return 0;
}