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

UptoLike

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

- 57 -
WSAENOTSOCK
Указан дескриптор файла, не сокета
WSAETIMEDOUT
При попытке установления канала связи возникла задержка
во времени
При использовании параметра FD_CLOSE может возникнуть одна из
следующих ошибок
Код ошибки Описание
WSAENETDOWN
Сбой в сети
WSAECONNRESET
Разрыв соединения удаленным узлом
WSAECONNABORTED
Сбой из-за слишком большой задержки или по другой при-
чине
В случае использования параметров FD_READ, FD_WRITE, FD_OOB
или FD_ACCEPT может возникнуть ошибка с кодом WSAENETDOWN.
Обработчик сообщения WSA_NETEVENT должен выполнить анализ
причины, по которой он был вызван, так как за один вызов функции
WSAAsyncSelect можно задать несколько событий, вызывающих генерацию
этого сообщения. Такой анализ проводится, например, следующим образом
(параметр wParam
содержит дескриптор сокета, на котором выполняется пе-
редача данных, а lParam - код происшедшего в сети события)
void
WndProc_OnWSANetEvent(HWND hWnd,
UINT msg,
WPARAM wParam,
LPARAM lParam)
{
char szTemp[256];
int rc;
// если на сокете выполняется передача данных, то
// принять и отобразить эти данные в виде строки текста
if (WSAGETSELECTEVENT(lParam) == FD_READ)
{
rc = recv((SOCKET) wParam, szTemp, 256, 0);
if (rc)
{
szTemp[rc] = '\0';
MessageBox(NULL, szTemp, "Принятые данные", MB_OK);
}
return;
}
// если соединение завершено, вывести сообщение об этом
else
if (WSAGETSELECTEVENT(lParam) == FD_CLOSE)
                                   - 57 -


 WSAENOTSOCK            Указан дескриптор файла, не сокета
 WSAETIMEDOUT           При попытке установления канала связи возникла задержка
                        во времени

    При использовании параметра FD_CLOSE может возникнуть одна из
следующих ошибок

    Код ошибки                               Описание
WSAENETDOWN            Сбой в сети
WSAECONNRESET          Разрыв соединения удаленным узлом
WSAECONNABORTED        Сбой из-за слишком большой задержки или по другой при-
                       чине

    В случае использования параметров FD_READ, FD_WRITE, FD_OOB
или FD_ACCEPT может возникнуть ошибка с кодом WSAENETDOWN.
    Обработчик сообщения WSA_NETEVENT должен выполнить анализ
причины, по которой он был вызван, так как за один вызов функции
WSAAsyncSelect можно задать несколько событий, вызывающих генерацию
этого сообщения. Такой анализ проводится, например, следующим образом
(параметр wParam содержит дескриптор сокета, на котором выполняется пе-
редача данных, а lParam - код происшедшего в сети события)

void
WndProc_OnWSANetEvent(HWND hWnd,
                     UINT msg,
                     WPARAM wParam,
                     LPARAM lParam)
{
  char szTemp[256];
  int rc;

  // если на сокете выполняется передача данных, то
  // принять и отобразить эти данные в виде строки текста
  if (WSAGETSELECTEVENT(lParam) == FD_READ)
  {
      rc = recv((SOCKET) wParam, szTemp, 256, 0);
      if (rc)
      {
          szTemp[rc] = '\0';
          MessageBox(NULL, szTemp, "Принятые данные", MB_OK);
      }
      return;
  }
  // если соединение завершено, вывести сообщение об этом
  else
  if (WSAGETSELECTEVENT(lParam) == FD_CLOSE)