21.5.2 Пассивное открытие сервера TCP

We use cookies. Read the Privacy and Cookie Policy

21.5.2 Пассивное открытие сервера TCP

Сервер готовится к принятию запроса на соединение и пассивно ожидает обращения клиентов. При подготовке он выполняет ряд запросов:

socket() Сервер идентифицирует тип связи (в данном случае TCP). Локальная система создает соответствующую структуру данных TCB для взаимодействия с сервером и возвращает дескриптор socket. bind() Сервер устанавливает локальный IP-адрес и порт, которыми он будет пользоваться. Вспомним, что хост может иметь несколько IP-адресов. Сервер может применять один IP-адрес или указать, что желает принимать соединения от любого локального IP-адреса. Он может запросить определенный порт или разрешить связывание запроса с одним из доступных свободных портов. listen() Сервер устанавливает длину очереди для клиентов. accept() Сервер готов принимать соединения от клиентов. Если очередь не пуста, принимается первый полученный клиентский запрос. Запрос accept() создает новый TCB, который будет использоваться для соединения этого клиента и возвращать новый дескриптор соединения серверу.

Обычно применяется синхронная форма приема запросов, чтобы при пустой очереди accept() ожидал появления следующего клиента до ответа на полученный запрос.