Пример: получение семейства адресов сокета
Пример: получение семейства адресов сокета
Функция 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 } un;
9 socklen_t len;
10 len = MAXSOCKADDR;
11 if (getsockname(sockfd, (SA*)un.data, &len) < 0)
12 return (-1);
13 return (un.sa.sa_family);
14 }
Выделение пространства для наибольшей структуры адреса сокета
5-8 Поскольку мы не знаем, какой тип структуры адреса сокета нужно будет разместить в памяти, мы используем в нашем заголовочном файле unp.h константу MAXSOCKADDR, которая представляет собой размер наибольшей структуры адреса сокета в байтах. Мы определяем массив типа char соответствующего размера в объединении, включающем универсальную структуру адреса сокета.
Вызов функции getsockname
10-13 Мы вызываем функцию getsockname и возвращаем семейство адресов.
Поскольку POSIX позволяет вызывать функцию getsockname на неприсоединенном сокете, эта функция должна работать для любого дескриптора открытого сокета.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Пример: подготовка и получение клиентских запросов соединения
Пример: подготовка и получение клиентских запросов соединения Ниже приводится фрагмент кода, показывающий, как создать сокет и организовать прием клиентских запросов соединения.В этом примере используются две стандартные функции: htons ("host to network short" — "ближняя связь") и
Пример: функция приема сообщений в случае сокета
Пример: функция приема сообщений в случае сокета Часто оказывается удобным отправлять и получать сообщения в виде единых блоков. Как было показано в главе 11, каналы позволяют это сделать. Однако в случае сокетов требуется создание заголовка, содержащего размер
Дерево семейства процессов
Дерево семейства процессов В операционной системе Linux существует четкая иерархия процессов. Все процессы являются потомками процесса init, значение идентификатора PID для которого равно 1. Ядро запускает процесс init на последнем шаге процедуры загрузки системы. Процесс init, в
Семейства API
Семейства API Общее множество вызовов API (Application Program Interface — интегральное наименование всего множества вызовов из программной среды к услугам операционной системы), реализуемое операционной системой (ОС) реального времени QNX, естественным образом разделяется на три
23.7. Получение адресов
23.7. Получение адресов Поскольку протокол SCTP ориентирован на многоинтерфейсные узлы, для определения адресов локального и удаленного узла не могут использоваться те же механизмы, что и в TCP. В этом разделе мы изменим код клиента, добавив в него подписку на уведомление о
Представление семейства
Представление семейства Сочетание символов SUSE в разное время писалось по разному и имело разное содержание. Сначала оно в форме S.u.S.E. было просто аббревиатурой от названия фирмы, занимавшейся консалтингом и поддержкой UNIX-систем. После того, как эта фирма занялась
Семерка - первый шаг нового семейства
Семерка - первый шаг нового семейства Чем InterBase 7 отличается от своих предшественников? Вот главный вопрос, на который отвечает эта глава.Прежде всего надо отметить, что помимо непосредственно технических новшеств и улучшений в InterBase 7 был введен ряд изменений
Урок № 1. Общие сведения о продуктах семейства "1С"
Урок № 1. Общие сведения о продуктах семейства "1С" Фирма "1С" давно и прочно занимает лидирующие позиции на рынке программного обеспечения экономико-финансового и бухгалтерского назначения. В настоящее время компания предлагает широкий ассортимент программных средств,
Глава 4 Программы семейства Uranus
Глава 4 Программы семейства Uranus Uranus — одна из старейших астрологических программ, используемых в настоящее время. Программы этого семейства обладают достаточно удобным в использовании русскоязычным интерфейсом, интуитивно понятной системой подсказок и отличаются
Глава 5 Программы семейства Zet
Глава 5 Программы семейства Zet Эта глава знакомит с программой Zet, которая наиболее распространена благодаря своей общедоступности. Существует ряд модификаций. На сайте программы представлены различные ее версии, начиная с пятой и заканчивая восьмой, наиболее
Возможности программ семейства Zet
Возможности программ семейства Zet Необходимо отметить удобство использования Zet, широкие возможности, имеющиеся в программе. Помимо всего прочего, программа представляет серьезный интерес для астронома, поскольку в ней присутствует астрономический блок, в который
Глава 6 Программы семейства Stalker
Глава 6 Программы семейства Stalker В этой главе мы рассмотрим основные особенности программы Stalker, которая некоторое время назад была лидером по числу продаж на астрологическом рынке. В последнее время она уступила первые места программам более широкого профиля, однако
Глава 7 Программы семейства Almagest
Глава 7 Программы семейства Almagest Программы семейства Almagest — это венец астрологического и компьютерного творчества, их используют преимущественно профессиональные астрологи.С помощью программы HORARY ALMAGEST уверенное толкование самых сложных астрологических карт будет
Стивенс Уильям Ричард
Просмотр ограничен
Смотрите доступные для ознакомления главы 👉