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

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

Функция 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 на неприсоединенном сокете, эта функция должна работать для любого дескриптора открытого сокета.

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

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

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

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

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

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


Пример: функция приема сообщений в случае сокета

Из книги Компьютер в помощь астрологу автора Жадаев А. Г.

Пример: функция приема сообщений в случае сокета Часто оказывается удобным отправлять и получать сообщения в виде единых блоков. Как было показано в главе 11, каналы позволяют это сделать. Однако в случае сокетов требуется создание заголовка, содержащего размер


Глава 4 Программы семейства Uranus

Из книги 1С: Бухгалтерия 8 с нуля. 100 уроков для начинающих автора Гладкий Алексей Анатольевич

Глава 4 Программы семейства Uranus Uranus — одна из старейших астрологических программ, используемых в настоящее время. Программы этого семейства обладают достаточно удобным в использовании русскоязычным интерфейсом, интуитивно понятной системой подсказок и отличаются


Глава 5 Программы семейства Zet

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

Глава 5 Программы семейства Zet Эта глава знакомит с программой Zet, которая наиболее распространена благодаря своей общедоступности. Существует ряд модификаций. На сайте программы представлены различные ее версии, начиная с пятой и заканчивая восьмой, наиболее


Возможности программ семейства Zet

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

Возможности программ семейства Zet Необходимо отметить удобство использования Zet, широкие возможности, имеющиеся в программе. Помимо всего прочего, программа представляет серьезный интерес для астронома, поскольку в ней присутствует астрономический блок, в который


Глава 6 Программы семейства Stalker

Из книги Разработка ядра Linux автора Лав Роберт

Глава 6 Программы семейства Stalker В этой главе мы рассмотрим основные особенности программы Stalker, которая некоторое время назад была лидером по числу продаж на астрологическом рынке. В последнее время она уступила первые места программам более широкого профиля, однако


Глава 7 Программы семейства Almagest

Из книги Вопросы истории: UNIX, Linux, BSD и другие автора Федорчук Алексей Викторович

Глава 7 Программы семейства Almagest Программы семейства Almagest — это венец астрологического и компьютерного творчества, их используют преимущественно профессиональные астрологи.С помощью программы HORARY ALMAGEST уверенное толкование самых сложных астрологических карт будет


Семейства API

Из книги Linux и все, все, все... Статьи и колонки в LinuxFormat, 2006-2013 автора Федорчук Алексей Викторович

Семейства API Общее множество вызовов API (Application Program Interface — интегральное наименование всего множества вызовов из программной среды к услугам операционной системы), реализуемое операционной системой (ОС) реального времени QNX, естественным образом разделяется на три


Урок № 1. Общие сведения о продуктах семейства "1С"

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

Урок № 1. Общие сведения о продуктах семейства "1С" Фирма "1С" давно и прочно занимает лидирующие позиции на рынке программного обеспечения экономико-финансового и бухгалтерского назначения. В настоящее время компания предлагает широкий ассортимент программных средств,


Семерка - первый шаг нового семейства

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

Семерка - первый шаг нового семейства Чем InterBase 7 отличается от своих предшественников? Вот главный вопрос, на который отвечает эта глава.Прежде всего надо отметить, что помимо непосредственно технических новшеств и улучшений в InterBase 7 был введен ряд изменений


23.7. Получение адресов

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

23.7. Получение адресов Поскольку протокол SCTP ориентирован на многоинтерфейсные узлы, для определения адресов локального и удаленного узла не могут использоваться те же механизмы, что и в TCP. В этом разделе мы изменим код клиента, добавив в него подписку на уведомление о


Дерево семейства процессов

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

Дерево семейства процессов В операционной системе Linux существует четкая иерархия процессов. Все процессы являются потомками процесса init, значение идентификатора PID для которого равно 1. Ядро запускает процесс init на последнем шаге процедуры загрузки системы. Процесс init, в


Представление семейства

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

Представление семейства Сочетание символов SUSE в разное время писалось по разному и имело разное содержание. Сначала оно в форме S.u.S.E. было просто аббревиатурой от названия фирмы, занимавшейся консалтингом и поддержкой UNIX-систем. После того, как эта фирма занялась