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

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

Ниже приводится фрагмент кода, показывающий, как создать сокет и организовать прием клиентских запросов соединения.

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

Номером порта сервера может быть любое число из диапазона, допустимого для целых чисел типа short integer, но для определенных пользователем служб обычно используются числа в диапазоне 1025—5000. Порты с меньшими номерами зарезервированы для таких известных служб, как telnet или ftp, в то время как порты с большими номерами предполагаются для использования других стандартных служб.

struct sockaddr_in SrvSAddr; /* Адресная структура сервера. */

struct sockaddr_in ConnectAddr;

SOCKET SrvSock, sockio;

SrvSock = socket(AF_INET, SOCK_STREAM, 0);

SrvSAddr.sin_family = AF_INET;

SrvSAddr.sin_addr.s_addr = htonl(INADDR_ANY);

SrvSAddr.sin_port = htons(SERVER_PORT);

bind(SrvSock, (struct sockaddr *)&SrvSAddr, sizeof SrvSAddr);

listen(SrvSock, 5);

AddrLen = sizeof(ConnectAddr); 

sockio = accept(SrvSock, (struct sockaddr *) &ConnectAddr, &AddrLen);

… Получение запросов и отправка ответов …

shutdown(sockio);

closesocket(sockio);

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

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

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

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

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

Прием клиентских запросов соединения Наконец, сервер может ожидать соединения с клиентом, используя функцию accept, возвращающую новый подключенный сокет, который будет использоваться в операциях ввода/вывода. Заметьте, что исходный сокет, который теперь находится в


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

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

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


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

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

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


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

Из книги Искусство программирования на языке сценариев командной оболочки автора Купер Мендель

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


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

Из книги Как сделать свой сайт и заработать на нем. Практическое пособие для начинающих по заработку в Интернете автора Мухутдинов Евгений

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


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

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

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


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

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

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


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

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

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


Пример: получение семейства адресов сокета

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

Пример: получение семейства адресов сокета Функция sockfd_to_family, представленная в листинге 4.4, возвращает семейство адресов сокета.Листинг 4.4. Возвращаемое семейство адресов сокета//lib/sockfd_to_family.c 1 #include "unp.h" 2 int 3 sockfd_to_family(int sockfd) 4 { 5  union { 6   struct sockaddr sa; 7   char data[MAXSOCKADDR]; 8  }


Глава 5 Пример TCP-соединения клиент-сервер

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

Глава 5 Пример TCP-соединения клиент-сервер 5.1. Введение Напишем простой пример пары клиент-сервер, используя элементарные функции из предыдущей главы. Наш простой пример — это эхо-сервер, функционирующий следующим образом:1. Клиент считывает строку текста из


Глава 10 Пример SCTP-соединения клиент-сервер

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

Глава 10 Пример SCTP-соединения клиент-сервер 10.1. Введение Воспользуемся некоторыми элементарными функциями из глав 4 и 9 для написания полнофункционального приложения SCTP с архитектурой клиент-сервер типа «один-ко-многим». Сервер из нашего примера будет аналогичен


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

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

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


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

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

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