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

UptoLike

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

- 49 -
int
listen(SOCKET sock, int backlog);
Через параметр sock функции необходимо передать дескриптор сокета,
который будет использован для создания сокета, параметр backlog задает
максимальный размер очереди для ожидания соединения (можно указывать
значения от 1 до 5). Очередь содержит запросы на установку соединений для
каждой пары значений (IP-адрес, порт). Ниже приведен список возможных
кодов ошибок для функции listen
Код ошибки Описание
WSANOTINITIALISED
Перед использованием функции необходимо вызвать функ-
цию WSAStartup
WSAENETDOWN
Сбой в сети
WSAEADDRINUSE
Указанный адрес уже используется
WSAEINPROGRESS Выполняется блокирующая функция интерфейса Windows
Sockets
WSAEINVAL
Сокет еще не был привязан к адресу или уже находится в
подключенном состоянии
WSAEISCONN
Сокет уже находится в подключенном состоянии
WSAEMFILE
Нет доступных дескрипторов
WSAENOBUFS
Недостаток памяти для размещения буфера
WSAENOTSOCK
Указанный в параметре дескриптор не является дескрипто-
ром сокета
WSAEOPNOTSUPP Функция listen не может работать с сокетом указанного типа
Ниже приведен пример вызова функции listen
if (listen(srv_socket, 1) == SOCKET_ERROR)
{
closesocket(srv_socket);
MessageBox(NULL, "Ошибка функции Listen", "Error", MB_OK);
return;
}
Далее программа должна ожидать соединения, это может быть выполне-
но двумя различными способами.
Первый способ заключается в циклическом вызове функции accept до
тех пор, пока не будет установлено соединение; затем можно приступить к
обмену данными.
Функция accept имеет следующий прототип
SOCKET
accept(SOCKET sock, struct sockaddr FAR *addr, int FAR *addrlen);
                                     - 49 -


int
listen(SOCKET sock, int backlog);

    Через параметр sock функции необходимо передать дескриптор сокета,
который будет использован для создания сокета, параметр backlog задает
максимальный размер очереди для ожидания соединения (можно указывать
значения от 1 до 5). Очередь содержит запросы на установку соединений для
каждой пары значений (IP-адрес, порт). Ниже приведен список возможных
кодов ошибок для функции listen

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

    Ниже приведен пример вызова функции listen

if (listen(srv_socket, 1) == SOCKET_ERROR)
{
    closesocket(srv_socket);
    MessageBox(NULL, "Ошибка функции Listen", "Error", MB_OK);
    return;
}

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

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