Книга: Системное программирование в среде Windows
Прием клиентских запросов соединения
Прием клиентских запросов соединения
Наконец, сервер может ожидать соединения с клиентом, используя функцию accept, возвращающую новый подключенный сокет, который будет использоваться в операциях ввода/вывода. Заметьте, что исходный сокет, который теперь находится в состоянии прослушивания (listening state), используется исключительно в качестве параметра функции accept, а не для непосредственного участия в операциях ввода/вывода.
Функция accept блокируется до тех пор, пока от клиента не поступит запрос соединения, после чего она возвращает новый сокет ввода/вывода. Хотя рассмотрение этого и выходит за рамки данной книги, возможно создание неблокирующихся сокетов, а в сервере (программа 12.2) для приема запроса используется отдельный поток, что позволяет создавать также неблокирующиеся серверы.
SOCKET accept(SOCKET s, LPSOCKADDR lpAddr, LPINT lpAddrLen);
Параметры
s — прослушивающий сокет. Чтобы перевести сокет в состояние прослушивания, необходимо предварительно вызвать функции socket, bind и listen.
lpAddr — указатель на структуру sockaddr_in, предоставляющую адрес клиентской системы.
lpAddrLen — указатель на переменную, которая будет содержать размер возвращенной структуры sockaddr_in. Перед вызовом функции accept эта переменная должна быть инициализирована значением sizeof(struct sockaddr_in).
- Пример: подготовка и получение клиентских запросов соединения
- Восстановление из резервной копии на системе-приемнике
- Глава 11. Соединения точка-точка и ретрансляторы
- Улучшенный оптимизатор запросов
- Асинхронный сервер и отмена выполняющихся запросов
- Прием «кулисы»
- Прием 45. «Простые слова. Четкие идеи. Сильные эмоции»
- 2. Операции декартового произведения и естественного соединения
- 4. Варианты операций соединения
- 1. Оператор Select – базовый оператор языка структурированных запросов
- 2. Унарные операции на языке структурированных запросов
- 3. Бинарные операции на языке структурированных запросов