Пример: подготовка и получение клиентских запросов соединения
Пример: подготовка и получение клиентских запросов соединения
Ниже приводится фрагмент кода, показывающий, как создать сокет и организовать прием клиентских запросов соединения.
В этом примере используются две стандартные функции: 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);
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Прием клиентских запросов соединения
Прием клиентских запросов соединения Наконец, сервер может ожидать соединения с клиентом, используя функцию accept, возвращающую новый подключенный сокет, который будет использоваться в операциях ввода/вывода. Заметьте, что исходный сокет, который теперь находится в
Пример: получение семейства адресов сокета
Пример: получение семейства адресов сокета Функция 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. Операционная система распределяет
Использование клиентских средств NTP
Использование клиентских средств NTP Ранее уже шла речь о том, что при формировании сети можно расположить на одном из компьютеров сервер NTP, который получал бы информацию о времени от внешнего сервера, и настроить остальные компьютеры так, чтобы они обращались за этой
Настройка клиентских машин для использования AMANDA
Настройка клиентских машин для использования AMANDA AMANDA осуществляет резервное копирование, инициируемое сервером, поэтому на компьютере, выступающем в роли клиента, должна выполняться программа-сервер. Данная программа, предназначенная для работы в системах Linux и UNIX,
Русификация клиентских приложений InterBase
Русификация клиентских приложений InterBase Разобравшись с русификацией баз данных InterBase и с тем, как обеспечить хранение и интерпретацию символов на уровне базы данных, необходимо рассмотреть вопрос о том, как сделать так, чтобы клиентские приложения могли корректно читать
Разработка клиентских приложений СУБД InterBase с использованием технологии Microsoft OLE DB
Разработка клиентских приложений СУБД InterBase с использованием технологии Microsoft OLE DB Немного истории Одним из распространенных заблуждений разработчиков баз данных является мысль, что СУБД InterBase ориентирована исключительно на работу с продуктами компании Borland. И этому
Использование IBProvider в клиентских приложениях
Использование IBProvider в клиентских приложениях Низкоуровневые прикладные интерфейсы для работы с СУБД (API) обычно не используются в клиентских приложениях из-за большого объема кода, необходимого для подготовки и выполнения SQL-запросов. Это относится и к OLE DB-интерфейсам.
Использование скриптов в клиентских приложениях базы данных InterBase
Использование скриптов в клиентских приложениях базы данных InterBase Время от времени у любого программиста появляется желание вынести часть логики своих приложений на уровень, который можно было бы изменять без перекомпиляции приложения. А для определенного класса задач
Поддержка "живых" клиентских наборов
Поддержка "живых" клиентских наборов Многие клиентские интерфейсы реализуют классы наборов данных или наборов записей, которые получают выходные наборы от операторов SELECT. Такие клиентские классы обычно предоставляют методы DML, которые выбирают одну строку из буфера,