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

UptoLike

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

51
return;
}
Далее программа должна ожидать соединения, это может быть выполнено
двумя различными способами.
Первый способ заключается в циклическом вызове функции
accept
до тех
пор, пока не будет установлено соединение; затем можно приступить к обме-
ну данными.
Функция
accept
имеет следующий прототип:
SOCKET
accept(SOCKET sock, struct sockaddr FAR *addr, int FAR *addrlen);
Через параметр
sock передается идентификатор сокета, находящегося в
режиме приема для выполнения ожидания. Параметр
addr
должен содержать
адрес буфера, в который будет записан адрес узла, подключившегося к сер-
веру (размер этого буфера должен быть записан в целочисленной перемен-
ной, адрес которой передается через параметр
addrlen
).
Список возможных кодов ошибки для функции
accept
приведен ниже
Код ошибки Описание
WSANOTINITIALISED
Перед использованием функции необходимо вызвать функ-
цию WSAStartup
WSAENETDOWN
Сбой в сети
WSAEFAULT Значение параметра addrlen меньше размера структуры ад-
реса
WSAEINTR
Выполнение функции было отменено при помощи функции
WSACancelBlockingCall
WSAEINPROGRESS Выполняется блокирующая функция интерфейса Windows
Sockets
WSAEINVAL Перед вызовом функции accept не была вызвана функция
listen
WSAEMFILE
Нет доступных дескрипторов
WSAENOBUFS
Установлено слишком много соединений
WSAENOTSOCK
Указанный в параметре дескриптор не является дескрипто-
ром сокета
WSAEOPNOTSUPP
Данный тип сокета нельзя использовать при вызове функ-
ций, ориентированных на работу с каналом связи
WSAEWOULDBLOCK
Сокет отмечен как неблокирующий и в настоящее время нет
каналов связи, которые нужно устанавливать
Второй (более удачный) способ ожидания соединения заключается в ис-
пользовании расширения программного интерфейса
Windows Sockets
, предна-
значенного для выполнения асинхронных операций.
     return;
}

  Далее программа должна ожидать соединения, это может быть выполнено
двумя различными способами.
  Первый способ заключается в циклическом вызове функции accept до тех
пор, пока не будет установлено соединение; затем можно приступить к обме-
ну данными.
  Функция accept имеет следующий прототип:

SOCKET
accept(SOCKET sock, struct sockaddr FAR *addr, int FAR *addrlen);

  Через параметр sock передается идентификатор сокета, находящегося в
режиме приема для выполнения ожидания. Параметр addr должен содержать
адрес буфера, в который будет записан адрес узла, подключившегося к сер-
веру (размер этого буфера должен быть записан в целочисленной перемен-
ной, адрес которой передается через параметр addrlen).
  Список возможных кодов ошибки для функции accept приведен ниже

        Код ошибки                               Описание
    WSANOTINITIALISED   Перед использованием функции необходимо вызвать функ-
                        цию WSAStartup
    WSAENETDOWN         Сбой в сети
    WSAEFAULT           Значение параметра addrlen меньше размера структуры ад-
                        реса
    WSAEINTR            Выполнение функции было отменено при помощи функции
                        WSACancelBlockingCall
    WSAEINPROGRESS      Выполняется блокирующая функция интерфейса Windows
                        Sockets
    WSAEINVAL           Перед вызовом функции accept не была вызвана функция
                        listen
    WSAEMFILE           Нет доступных дескрипторов
    WSAENOBUFS          Установлено слишком много соединений
    WSAENOTSOCK         Указанный в параметре дескриптор не является дескрипто-
                        ром сокета
    WSAEOPNOTSUPP       Данный тип сокета нельзя использовать при вызове функ-
                        ций, ориентированных на работу с каналом связи
    WSAEWOULDBLOCK      Сокет отмечен как неблокирующий и в настоящее время нет
                        каналов связи, которые нужно устанавливать

  Второй (более удачный) способ ожидания соединения заключается в ис-
пользовании расширения программного интерфейса Windows Sockets, предна-
значенного для выполнения асинхронных операций.


                                   51