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

UptoLike

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

50
В случае передачи датаграммных сообщений при помощи протокола нега-
рантированной доставки UDP канал связи не нужен и сразу после создания
сокетов и их инициализации можно приступать к передаче данных. Однако
при использовании протокола гарантированной доставки TCP необходимо
создать канал связи.
6.6.1 Сторона сервера
При создании канала связи со стороны сервера прежде
всего следует пере-
ключить сокет в режим приема для выполнения ожидания соединения с кли-
ентом при помощи функции
listen:
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);
  В случае передачи датаграммных сообщений при помощи протокола нега-
рантированной доставки UDP канал связи не нужен и сразу после создания
сокетов и их инициализации можно приступать к передаче данных. Однако
при использовании протокола гарантированной доставки TCP необходимо
создать канал связи.

  6.6.1 Сторона сервера

  При создании канала связи со стороны сервера прежде всего следует пере-
ключить сокет в режим приема для выполнения ожидания соединения с кли-
ентом при помощи функции listen:

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

                                    50