ВУЗ:
Составители:
Рубрика:
52
Вместо того, чтобы ожидать соединения, вызывая в цикле функцию
accept
,
приложение может единожды вызвать функцию
WSAAsyncSelect
, указав ей,
что при получении запроса на установку соединения оконная функция при-
ложения должна получить сообщение
#define WSA_ACCEPT (WM_USER+1)
// При попытке установки соединения главное окно
// приложения получит сообщение WSA_ACCEPT
rc = WSAAsyncSelect(srv_socket, hWnd,
WSA_ACCEPT, FD_ACCEPT);
if (rc > 0)
{
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;
Вместо того, чтобы ожидать соединения, вызывая в цикле функцию accept,
приложение может единожды вызвать функцию WSAAsyncSelect, указав ей,
что при получении запроса на установку соединения оконная функция при-
ложения должна получить сообщение
#define WSA_ACCEPT (WM_USER+1)
// При попытке установки соединения главное окно
// приложения получит сообщение WSA_ACCEPT
rc = WSAAsyncSelect(srv_socket, hWnd,
WSA_ACCEPT, FD_ACCEPT);
if (rc > 0)
{
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;
52
Страницы
- « первая
- ‹ предыдущая
- …
- 50
- 51
- 52
- 53
- 54
- …
- следующая ›
- последняя »
