Hi, Im using winsock asynchronous sockets. So far I've set it up listening. But I am not sure if this is right. Could you tell me if I got my code in the right places? Thanks WM_USER+1 is what I have assigned the asynchronous socket to. //start listening button
SOCKET s, client[3];
int number_of_clients;
void CHostDlg::OnButtonHostgameStartListening()
{
number_of_clients=0;
s = socket (AF_INET, SOCK_STREAM, 0);
sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons (5001);
addr.sin_addr.s_addr = htonl (INADDR_ANY);
if (bind(s, (LPSOCKADDR)&addr, sizeof(addr)) == SOCKET_ERROR)
{
MessageBox("Winsock failed to bind port", "Error");
WSACleanup ();
}
if (listen(s,3)==SOCKET_ERROR)
{
MessageBox("Winsock failed to start listening", "Error");
WSACleanup ();
editConnectionStatus->SetWindowText("Disconnected");
}
WSAAsyncSelect(s, GetSafeHwnd(), WM_USER+1, FD_WRITE | FD_CONNECT | FD_READ | FD_CLOSE);
}
//disconnect
void CHostDlg::OnButtonHostgameCloseConnections()
{
shutdown (s, SD_SEND);
closesocket (s);
}
//message handler, handles connection accepts
LRESULT CHostDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
switch( message )
{
case WM_USER+1:
if (WSAGETSELECTERROR(lParam))
{
WSACleanup ();
return 0;
}
switch (WSAGETSELECTEVENT(lParam))
{
case FD_ACCEPT:
while (number_of_clients < MAX_CLIENTS)
{
client[number_of_clients] = accept (s, client_sock[number_of_clients], &addr_size);
if (client[number_of_clients] == INVALID_SOCKET)
{
WSACleanup ();
return 0;
}
else
{
number_of_clients++;
}
}
break;
case FD_READ:
break;
case FD_CONNECT:
break;
case FD_CLOSE:
break;
default:
break;
}
break;
}
return CDialog::WindowProc(message, wParam, lParam);
}
[Edited by - johnnyBravo on August 19, 2004 7:24:09 AM]