Сетевые технологии. Учебное пособие. Баканов В.М. - 53 стр.

UptoLike

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

53
}
// определение размера сокета
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.
// Это же сообщение поступит при разрыве соединения
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 Сторона клиента
  }

  // определение размера сокета
  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.
  // Это же сообщение поступит при разрыве соединения

  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 Сторона клиента



                                   53