Если у вас большой опыт в программировании сокетов (или вы сравниваете данную книгу с ее первым изданием), то вы обязательно заметите, что функции, применявшиеся для преобразования имен, значительно изменились. Эти изменения позволяют создавать программы абсолютно независимо от того протокола, который они используют. Теперь гораздо легче разрабатывать программы, работающие как на IPv4-, так и на IPv6-машинах. Они также должны распространяться на остальные протоколы, хотя функция getaddrinfo()
в данный момент работает только для IPv4 и IPv6.
Адрес обратной связи — это специальный адрес, который позволяет программам взаимодействовать через TCP/IP с приложениями только на одной и той же машине.
Для TCP-портов данная комбинация не может использоваться в течение двух минут.
Это называется трехсторонним квитированием TCP, которое на самом деле проходит несколько сложнее, чем описано выше.
Этот процесс называется сетевой загрузкой.
UDP-сокеты, которые имеют постоянные пункты назначения, присвоенные через функцию connect()
, иногда называются присоединенными UDP-сокетами.
Есть также возможность превратить подключенный сокет в неподключенный с помощью функции connect()
, однако эта процедура не стандартизирована. Если вам все же необходимо ее применить, обратитесь к [33].
Данные функции могут применяться для передачи данных через любой сокет, и иногда возникают причины для использования их в TCP-соединениях.
Возможно также применение системных вызовов sendmsg()
и recvmsg()
, однако необходимость в этом встречается редко.
Полное описание tftp можно найти в [33] и [34].
Спецификация tftp-протокола требует, чтобы серверы посылали данные клиенту на номер порта, отличающийся от порта, на котором сервер ожидает новые соединения. При этом нетрудно создать параллельный сервер, поскольку каждый сокет сервера предназначен только для одного клиента.
Применение этой структуры делает невозможным расширение данных функций на IPv6 без изменения их интерфейса.
Функции, использующие статическую память для сохранения результатов, усложняют построение многопоточных приложений, поскольку в код приложения требуется добавлять блокировки для защиты этих статических буферов.
Наверное, не существует IPv6-программ, использующих struct hostaddr
, однако они могут это делать. Функции, которые мы обсуждаем здесь, по умолчанию возвращают только информацию IPv4. Мы не будем рассматривать применение этих функций с IPv6.
UTC — Universal Coordinated Time (универсальное синхронизированное время), на которое иногда ошибочно ссылаются как на UCT, приблизительно эквивалентное среднему времени по Гринвичу (GMT) и зулу. Описание всех часовых поясов выходит за рамки материала, рассматриваемого в настоящей книге.
Мы не рекомендуем применять библиотеку svgalib
для графического программирования. Во многих книгах описывается программирование для X Window System, и система X предоставляет более разумный, безопасный и мобильный метод программирования графики. С другой стороны, если вы действительно собираетесь программировать для сервера X Window, то не сможете обойтись без кодирования VC. Таким образом, в любом случае данная глава окажется полезной.
Прочтите man-страницы для утилит loadkeys
, dumpkeys
, keytables
, setfont
и mapscrn
.
Данный интерфейс имеет недостаток. Для него необходимо устанавливать некоторые постоянные доли секунды и осуществлять преобразование. Макрос HZ
больше не является константой даже на отдельной платформе. Однако, по крайней мере, для архитектуры Intel i86 Линус Торвальдс установил, что все определенные интерфейсы в отношении HZ
должны представлять синтетический интерфейс в 100 Гц. Возможно, что в будущем периодические системные часы исчезнут, в таком случае тики станут полностью искусственным понятием.
В большинстве остальных систем с виртуальными консолями или терминалами динамическое распределение для них не производится.
Отдельные системы (но не Linux) инициируют автоматическое переключение, если вызывается консоль, которая не исполняется в текущий момент.
Читать дальше