Основы программирования в Linux
Шрифт:
Эти функции преобразуют 16- и 32-разрядные целые из внутреннего формата в сетевой порядок следования байтов и обратно. Их имена соответствуют сокращенному названию выполняемых преобразований, например "host to network, long" (htonl,
Для обеспечения корректного порядка следования при передаче 16-разрядного целого числа ваши сервер и клиент должны применить эти функции к адресу порта. В программу server3.c следует внести следующие изменения:
Результат, возвращаемый функцией
В сервер, благодаря применению константы
Теперь, выполнив программы server3 и client3, вы увидите корректный номер порта, используемый для локального соединения:
Если вы пользуетесь компьютером, у которого собственный формат представления целых совпадает с сетевым порядком следования байтов, вы не увидите никакой разницы. Но для обеспечения корректного взаимодействия клиентов и серверов с разной архитектурой важно всегда применять функции преобразования.
Сетевая информация
До сих пор у клиентских и серверных программ были адреса и номера портов, компилируемые в них. В более универсальных серверных и клиентских программах для определения применяемых адресов и портов вы можете использовать данные сети.
Если у вас есть на это право, можно добавить свой сервер к списку известных сервисов в файл /etc/services, который назначает имена номерам портов, так что клиенты могут использовать вместо номеров символические имена сервисов.
Точно так же зная имя компьютера, можно определить IP-адрес, вызвав функции базы данных сетевых узлов (host database), которые найдут эти адреса. Делают они это, обращаясь за справкой к конфигурационным файлам, например, etc/hosts или к сетевым информационным сервисам, таким как NIS (Network Information Services (сервисы сетевой информации), ранее
Функции базы данных сетевых узлов или хостов (Host database) объявлены в заголовочном файле интерфейса netdb.h:
Структура, возвращаемая этими функциями, должна как минимум содержать следующие элементы.
Если в базе данных нет элемента, соответствующего заданному узлу или адресу, информационные функции вернут пустой указатель.
Аналогично информацию, касающуюся сервисов и связанных номеров портов, можно получить с помощью информационных функций сервисов:
Параметр
Структура
Вы можете собрать воедино информацию о компьютере из базы данных сетевых узлов, вызвав функцию
Точка Бифуркации XVI
16. ТБ
Фантастика:
аниме
фэнтези
попаданцы
рейтинг книги
Блюдо подают холодным
1. Блюдо подают холодным
Фантастика:
рпг
попаданцы
фэнтези
рейтинг книги
Земля Забытых Имен
Фантастика:
фэнтези
рейтинг книги
Вернувшийся: Первые шаги. Том II
2. Вернувшийся
Фантастика:
боевая фантастика
космическая фантастика
рпг
рейтинг книги
Гильдия. Компиляция 1-10
Гильдия
Фантастика:
боевая фантастика
альтернативная история
рейтинг книги
Современный польский детектив
Детективы:
прочие детективы
иронические детективы
рейтинг книги
Пушкин
Документальная литература:
биографии и мемуары
рейтинг книги
Константин Леонтьев
1447. Жизнь замечательных людей
Документальная литература:
биографии и мемуары
рейтинг книги
Рассвет русского царства. Книга 2
2. Новая Русь
Фантастика:
альтернативная история
попаданцы
историческое фэнтези
рейтинг книги
"Охотник". Компиляция. Книги 1-12
Собрание сочинений
Фантастика:
боевая фантастика
рейтинг книги
Гражданский кодекс Российской Федерации. Части первая, вторая, третья и четвертая. Текст с изменения
Справочная литература:
путеводители
рейтинг книги