ВУЗ:
Составители:
Рубрика:
- 52 -
rc = WSAAsyncSelect(srv_socket, hWnd, WSA_NETEVENT,
FD_READ | FD_CLOSE);
if (rc > 0)
{
closesocket(srv_socket);
MessageBox(NULL, "Ошибка функции WSAAsyncSelect",
"Error", MB_OK);
return;
}
} // конец функции WndProc_OnWSAAccept
В данном случае обработчик сообщения вначале вызывает функцию
accept, выполняющую создание канала передачи данных. После этого функ-
ция WSAAsyncSelect вызывается повторно для того, чтобы установить
асинхронную обработку приема данных от удаленного клиента, а также об-
работку ситуации разрыва канала связи.
6.6.2.СТОРОНА КЛИЕНТА
Рассмотрим процедуру установки канала связи со стороны
клиента, ис-
пользованную в приложении CLIENT, полностью приведенном в [13].
Для установки соединения в приложении используется функция
SetConnected
SOCKADDR_IN dest_sin;
void SetConnection(HWND hWnd)
{
PHOSTENT phe;
// создание сокета
srv_socket = socket(AF_INET, SOCK_STREAM, 0);
if (srv_socket == INVALID_SOCKET)
{
MessageBox(NULL, "Ошибка создания сокета", "Error", MB_OK);
return;
}
// установка IP-адреса и номера порта
dest_sin.sin_family = AF_INET;
// определение адреса узла
phe = gethostbyname("localhost");
- 52 - rc = WSAAsyncSelect(srv_socket, hWnd, WSA_NETEVENT, FD_READ | FD_CLOSE); if (rc > 0) { closesocket(srv_socket); MessageBox(NULL, "Ошибка функции WSAAsyncSelect", "Error", MB_OK); return; } } // конец функции WndProc_OnWSAAccept В данном случае обработчик сообщения вначале вызывает функцию accept, выполняющую создание канала передачи данных. После этого функ- ция WSAAsyncSelect вызывается повторно для того, чтобы установить асинхронную обработку приема данных от удаленного клиента, а также об- работку ситуации разрыва канала связи. 6.6.2.СТОРОНА КЛИЕНТА Рассмотрим процедуру установки канала связи со стороны клиента, ис- пользованную в приложении CLIENT, полностью приведенном в [13]. Для установки соединения в приложении используется функция SetConnected SOCKADDR_IN dest_sin; void SetConnection(HWND hWnd) { PHOSTENT phe; // создание сокета srv_socket = socket(AF_INET, SOCK_STREAM, 0); if (srv_socket == INVALID_SOCKET) { MessageBox(NULL, "Ошибка создания сокета", "Error", MB_OK); return; } // установка IP-адреса и номера порта dest_sin.sin_family = AF_INET; // определение адреса узла phe = gethostbyname("localhost");
Страницы
- « первая
- ‹ предыдущая
- …
- 50
- 51
- 52
- 53
- 54
- …
- следующая ›
- последняя »