Прием клиентских запросов соединения

Прием клиентских запросов соединения

Наконец, сервер может ожидать соединения с клиентом, используя функцию 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). 

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Прием и отправка сообщений

Из книги Мир общения: ICQ автора Леонтьев Виталий Петрович

Прием и отправка сообщений С приемом сообщений по «аське» проблем возникнуть не должно: в момент, когда на ваш компьютер поступает письмо от одного из пользователей ICQ, цветок программы в системном трее сменяется на значок подмигивающей записки. Щелкните по нему – и


Прием поступающих событий

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Прием поступающих событий Использование событий в C# позволяет также упростить регистрацию обработчиков событий вызывающей стороны. Вместо необходимости указывать пользовательские вспомогательные методы, вызывающая сторона просто использует операции += и -= (которые в


Пример: подготовка и получение клиентских запросов соединения

Из книги Системное программирование в среде Windows автора Харт Джонсон М

Пример: подготовка и получение клиентских запросов соединения Ниже приводится фрагмент кода, показывающий, как создать сокет и организовать прием клиентских запросов соединения.В этом примере используются две стандартные функции: htons ("host to network short" — "ближняя связь") и


Секретный прием

Из книги Тайм-менеджмент для системных администраторов автора Лимончелли Томас

Секретный прием Скажу вам по секрету: нужно записывать свои цели. Пока они находятся у вас в голове, они не так конкретны, как вам кажется. Они слишком туманны. Невозможно оценить их, рассказать о них кому-нибудь. С ними невозможно работать.Процесс изложения на бумаге


Использование клиентских средств NTP

Из книги Сетевые средства Linux автора Смит Родерик В.

Использование клиентских средств NTP Ранее уже шла речь о том, что при формировании сети можно расположить на одном из компьютеров сервер NTP, который получал бы информацию о времени от внешнего сервера, и настроить остальные компьютеры так, чтобы они обращались за этой


Настройка клиентских машин для использования AMANDA

Из книги Программирование КПК и смартфонов на .NET Compact Framework автора Климов Александр П.

Настройка клиентских машин для использования AMANDA AMANDA осуществляет резервное копирование, инициируемое сервером, поэтому на компьютере, выступающем в роли клиента, должна выполняться программа-сервер. Данная программа, предназначенная для работы в системах Linux и UNIX,


Прием и обработка SMS-сообщений

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

Прием и обработка SMS-сообщений Итак, мы научились отправлять SMS-сообщения из своей программы. Но было бы неплохо научить приложения принимать подобные сообщения. Для приема сообщений существует пространство имен MessageInterception, которое находится в сборке


Поддержка "живых" клиентских наборов

Из книги Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform автора Кёртен Роб

Поддержка "живых" клиентских наборов Многие клиентские интерфейсы реализуют классы наборов данных или наборов записей, которые получают выходные наборы от операторов SELECT. Такие клиентские классы обычно предоставляют методы DML, которые выбирают одну строку из буфера,


Прием импульса

Из книги Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil автора Ковязин Алексей Николаевич

Прием импульса Прием импульса выполняется очень просто: короткое, четко определенное сообщение передается функции MsgReceive(), как будто поток отправил обычное стандартное сообщение. Единственное различие состоит в том, что вы не сможете применить функцию MsgReply() к такому


Русификация клиентских приложений InterBase

Из книги UNIX: разработка сетевых приложений автора Стивенс Уильям Ричард

Русификация клиентских приложений InterBase Разобравшись с русификацией баз данных InterBase и с тем, как обеспечить хранение и интерпретацию символов на уровне базы данных, необходимо рассмотреть вопрос о том, как сделать так, чтобы клиентские приложения могли корректно читать


Разработка клиентских приложений СУБД InterBase с использованием технологии Microsoft OLE DB

Из книги Цифровая фотография. Трюки и эффекты автора Гурский Юрий Анатольевич

Разработка клиентских приложений СУБД InterBase с использованием технологии Microsoft OLE DB Немного истории Одним из распространенных заблуждений разработчиков баз данных является мысль, что СУБД InterBase ориентирована исключительно на работу с продуктами компании Borland. И этому


Использование IBProvider в клиентских приложениях

Из книги автора

Использование IBProvider в клиентских приложениях Низкоуровневые прикладные интерфейсы для работы с СУБД (API) обычно не используются в клиентских приложениях из-за большого объема кода, необходимого для подготовки и выполнения SQL-запросов. Это относится и к OLE DB-интерфейсам.


Использование скриптов в клиентских приложениях базы данных InterBase

Из книги автора

Использование скриптов в клиентских приложениях базы данных InterBase Время от времени у любого программиста появляется желание вынести часть логики своих приложений на уровень, который можно было бы изменять без перекомпиляции приложения. А для определенного класса задач


Распределение клиентских соединений между дочерними процессами

Из книги автора

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


Распределение клиентских соединений между дочерними процессами

Из книги автора

Распределение клиентских соединений между дочерними процессами Используя функцию, показанную в листинге 30.10, мы можем исследовать распределение клиентских запросов между свободными дочерними процессами. Результат показан в табл. 30.2. Операционная система распределяет


Прием «кулисы»

Из книги автора

Прием «кулисы» Этот эффектный композиционный прием заключается в том, что объект помещают в своего рода «рамку». Очень интересные фотографии получаются, когда съемка ведется из арки ворот, из пещеры, да и просто сквозь ветви куста, – при этом объект получается