ВУЗ:
Составители:
Рубрика:
- 51 -
closesocket(srv_socket);
MessageBox(NULL, "Ошибка функции WSAAsyncSelect",
"Error", MB_OK);
return;
}
В данном случае ожидание выполняется для сокета srv_socket. Послед-
ний параметр функции имеет параметр FD_ACCEPT, это означает, что при
попытке создания канала связи функция окна с дескриптором hWnd получит
сообщение WSA_ACCEPT, определенное в приложении.
Обработчик этого сообщения может выглядеть, например, следующим
образом
void
WndProc_OnWSAAccept(HWND hWnd,
UINT msg,
WPARAM wParam,
LPARAM lParam);
{
int rc;
// при ошибке отменяется поступление извещений
// в главное окно приложения
if (WSAGETSELECTERROR(lParam) != 0)
{
MessageBox(NULL, "Ошибка функции Accept", "Error", MB_OK);
WSAAsyncSelect(srv_socket, hWnd, 0, 0);
return;
}
// определение размера сокета
acc_sin_len = sizeof(acc_sin);
// разрешение установки соединения
srv_socket = accept(srv_socket, (LPSOCKADDR) & acc_sin,
(int FAR *) & acc_sin_len);
if (srv_socket == INVALID_SOCKET)
{
MessageBox(NULL, "Ошибка функции Accept, недопустимый сокет",
"Error", MB_OK);
return;
}
// если на данном сокете начнется передача данных от
// клиента, в главное окно приложения поступит
// сообщение WSA_NETEVENT.
// Это же сообщение поступит при разрыве соединения
- 51 - closesocket(srv_socket); MessageBox(NULL, "Ошибка функции WSAAsyncSelect", "Error", MB_OK); return; } В данном случае ожидание выполняется для сокета srv_socket. Послед- ний параметр функции имеет параметр FD_ACCEPT, это означает, что при попытке создания канала связи функция окна с дескриптором hWnd получит сообщение WSA_ACCEPT, определенное в приложении. Обработчик этого сообщения может выглядеть, например, следующим образом void WndProc_OnWSAAccept(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); { int rc; // при ошибке отменяется поступление извещений // в главное окно приложения if (WSAGETSELECTERROR(lParam) != 0) { MessageBox(NULL, "Ошибка функции Accept", "Error", MB_OK); WSAAsyncSelect(srv_socket, hWnd, 0, 0); return; } // определение размера сокета acc_sin_len = sizeof(acc_sin); // разрешение установки соединения srv_socket = accept(srv_socket, (LPSOCKADDR) & acc_sin, (int FAR *) & acc_sin_len); if (srv_socket == INVALID_SOCKET) { MessageBox(NULL, "Ошибка функции Accept, недопустимый сокет", "Error", MB_OK); return; } // если на данном сокете начнется передача данных от // клиента, в главное окно приложения поступит // сообщение WSA_NETEVENT. // Это же сообщение поступит при разрыве соединения
Страницы
- « первая
- ‹ предыдущая
- …
- 49
- 50
- 51
- 52
- 53
- …
- следующая ›
- последняя »