Майкл Джонсон - Разработка приложений в среде Linux. Второе издание

Здесь есть возможность читать онлайн «Майкл Джонсон - Разработка приложений в среде Linux. Второе издание» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 2007, ISBN: 2007, Издательство: Вильямс, Жанр: ОС и Сети, Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Разработка приложений в среде Linux. Второе издание: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Разработка приложений в среде Linux. Второе издание»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Книга известных профессионалов в области разработки коммерческих приложений в Linux представляет собой отличный справочник для широкого круга программистов в Linux, а также тех разработчиков на языке С, которые перешли в среду Linux из других операционных систем. Подробно рассматриваются концепции, лежащие в основе процесса создания системных приложений, а также разнообразные доступные инструменты и библиотеки. Среди рассматриваемых в книге вопросов можно выделить анализ особенностей применения лицензий GNU, использование свободно распространяемых компиляторов и библиотек, системное программирование для Linux, а также написание и отладка собственных переносимых библиотек. Изобилие хорошо документированных примеров кода помогает лучше усвоить особенности программирования в Linux.
Книга рассчитана на разработчиков разной квалификации, а также может быть полезна для студентов и преподавателей соответствующих специальностей.

Разработка приложений в среде Linux. Второе издание — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Разработка приложений в среде Linux. Второе издание», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Программа-пример netlookup.сдемонстрирует использование inet_ntop(); полная программа представлена далее в этой главе.

120: if (addr->ai_family == PF_INET) {

121: struct sockaddr_in * inetaddr = (void*)addr->ai_addr;

122: char nameBuf[INET_ADDRSTRLEN];

123:

124: if (serviceName)

125: printf("\tport %d", ntohs(inetaddr->sin_port));

126:

127: if (hostName)

128: printf("\thost %s",

129: inet_ntop(AF_INET, &inetaddr->sin_addr,

130: nameBuf, sizeof(nameBuf)));

131: } else if (addr->ai_family == PF_INET6) {

132: struct sockaddr_in6 *inetaddr =

133: (void *) addr->ai_addr;

134: char nameBuf[INET6_ADDRSTRLEN];

135:

136: if (serviceName)

137: printf("\tport %d", ntohs(inetaddr->sin6_port));

138:

139: if (hostName)

140: printf("\thost %s",

141: inet_ntop(AF_INET6, &inetaddr->sin6_addr,

142: nameBuf, sizeof(nameBuf)));

143: }

Обратное преобразование строки, содержащей адрес с точками или двоеточиями, в двоичный IP-адрес выполняет функция inet_pton().

#include

int inet_pton(int family, const char * address, void * dest);

Параметр familyопределяет тип преобразуемого адреса (либо AF_INET, либо AF_INET6), a addressуказывает на строку, в которой содержится символьное представление адреса. Если используется AF_INET, то десятичная строка с точками преобразуется в двоичный адрес, хранящийся в переменной, на которую указывает параметр destструктуры struct in_addr. Для AF_INET6строка с двоеточиями преобразуется и сохраняется в переменной, на которую указывает destструктуры struct in6_addr. В отличие от большинства библиотечных функций, inet_pton()возвращает 1, если преобразование прошло успешно, 0, если destне содержит соответствующий адрес, и -1, если параметр familyне совпадает с AF_INETили AF_INET6.

Программа-пример reverselookup, код которой представлен далее в главе, использует функцию inet_pton()для преобразования IPv4- и IPv6-адресов, передаваемых пользователем, в структуры struct sockaddr. Ниже приводится раздел кода, выполняющий преобразования IP-адреса, на который указывает hostAddress. В конце данного кода struct sockaddr * addrуказывает на структуру, содержащую преобразованный адрес.

79: if (!hostAddress) {

80: addr4.sin_family = AF_INET;

81: addr4.sin_port = portNum;

82: } else if (! strchr(hostAddress, ':')) {

83: /* Если в hostAddress появляется двоеточие, то принимаем версию IPv6.

84: В противном случае это IPv4-адрес */

85:

86: if (inet_pton(AF_INET, hostAddress,

87: &addr4.sin_addr) <= 0) {

88: fprintf(stderr, "ошибка преобразования IPv4-адреса %s\n",

89: hostAddress);

90: return 1;

91: }

92:

93: addr4.sin_family = AF_INET;

94: addr4.sin_port = portNum;

95: } else {

96:

97: memset(&addr6, 0, sizeof(addr6));

98:

99: if (inet_pton(AF_INET6, hostAddress,

100: &addr6.sin6_addr) <= 0) {

101: fprintf(stderr, "ошибка преобразования IPv6-адреса %s\n",

102: hostAddress);

103: return 1;

104: }

105:

106: addr6.sin6_family = AF_INET6;

107: addr6.sin6_port = portNum;

108: addr = (struct sockaddr *) &addr6;

109: addrLen = sizeof(addr6);

110: }

17.5.5. Преобразование имен в адреса

Длинные последовательности чисел являются отлично подходящим методом идентификации для компьютеров, позволяющим им однозначно узнавать друг друга. Однако большинство людей охватывает ужас при мысли о том, что придется иметь дело с большим количеством цифр. Для того чтобы разрешить людям применять текстовые названия для компьютеров вместо числовых, в состав протоколов TCP/IP входит распределенная база данных для взаимных преобразований имен хостов и IP-адресов. Эта база данных называется DNS(Domain Name System — служба имен доменов), она подробно рассматривается в [34] и [1].

Служба DNS предлагает много функций, но сейчас нас интересует одна — возможность преобразования IP-адресов в имена хостов и наоборот. Несмотря на то что это преобразование должно выполняться как однозначное соответствие, на самом деле оно представляет собой отношение типа "многие ко многим". Другими словами, каждый IP-адрес может соответствовать нулю или более именам хостов, а каждое имя хоста соответствует нулю или более IP-адресам.

Использование неоднозначного соответствия между именами хостов и IP-адресами может показаться странным. Однако многие Internet-сайты применяют одну и ту же машину для ftp-сайта и Web-сайта. При этом адреса www.some.orgи ftp.some.orgдолжны ссылаться на одну и ту же машину, а для одной машины не нужны два IP-адреса. Таким образом, два имени хостов сводятся к одному IP-адресу. Каждый IP-адрес имеет одно первичное, или каноническое имя хоста, которое используется, если IP-адрес требуется преобразовать в единственное имя хоста во время обратного поиска имен.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Разработка приложений в среде Linux. Второе издание»

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


Геше Джампа Тинлей - Лоджонг (второе издание)
Геше Джампа Тинлей
Алексей Филатов - Люди «А». Второе издание
Алексей Филатов
Отзывы о книге «Разработка приложений в среде Linux. Второе издание»

Обсуждение, отзывы о книге «Разработка приложений в среде Linux. Второе издание» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x