关于异步事件WSAAsyncSelect的问题
hanzp 2003-03-25 10:45:12 我创建一个监听线程,在线程内等待客户端请求。我用WSAAsyncSelect(),但它是异步的,并不会堵塞运行。我该如何编写呢?
我的代码是这样的:
void CreateListenThread(void* pDlg)
{
SOCKET* myListenSocket;
sockaddr_in sockaddr;
int nResult;
int nSockErr;
int nPort;
HWND hWnd;
nPort = ((CServerDlg*)pDlg)->m_nPort;
hWnd = ((CServerDlg*)pDlg)->GetSafeHwnd();
sockaddr.sin_addr.s_addr = htonl(INADDR_ANY);
sockaddr.sin_family = AF_INET;
sockaddr.sin_port = htons(nPort);
myListenSocket = new SOCKET(AF_INET, SOCK_STREAM, 0);
nResult = bind(*myListenSocket, (LPSOCKADDR)&sockaddr, sizeof(sockaddr));
if ( nResult == SOCKET_ERROR )
{
nSockErr = WSAGetLastError();
//.........
}
nResult = listen(*myListenSocket, 5);
if ( nResult == SOCKET_ERROR )
{
nSockErr = WSAGetLastError();
//.....
}
while ( WSAAsyncSelect(*myListenSocket, hWnd, WM_USER+1, FD_ACCEPT) == 0 )
{
AfxMessageBox("a request received");
//.....
}
}
可我运行起来不是很好,请高手指教