Программное обеспечение компьютерных сетей и информационных систем. Баканов В.М. - 52 стр.

UptoLike

Составители: 

- 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");