Внешнее представление данных, фактически признанное стандартным
Компания Sun Microsystems разработала внешнее представление данных, которое определяет способы представления наиболее распространенных форматов данных при передаче по сети. Это представление компании Sun, известное под названием XDR (external Data Representation — Внешнее представление данных), фактически применяется в качестве стандартного в большинстве приложений клиент/сервер. Представление XDR определяет форматы данных для большинства типов данных, которыми обмениваются клиенты и серверы. Например, представление XDR определяет, что 32-битовые двоичные целые числа должны быть представлены в формате слова, оканчивающегося старшим байтом (т.е. наиболее значимый байт должен иметь меньший адрес в памяти). Профессиональная борьба с молью вот на этом сайте по лучшим ценам?
Типы данных XDR
В табл. 20.1 перечислены типы данных, для которых определены стандартные представления XDR. Стандарт XDR указывает, как должны быть закодированы элементы данных каждого типа для передачи по сети.
Таблица 20.1. Типы данных, для которых определено внешнее представление XDR
| Тип данных int | Размер 32 бита | Описание 32-битовое целое число со знаком |
| unsigned int | 32 бита | 32-битовое целое число без знака |
| bool | 32 бита | Логическое значение (ложное или истинное), представленное, соответственно, нулем или единицей |
| enum | произвольный | Перечисление, значения которого закодированы целыми числами (например, RED=1, WHITE=2, BLUE=3) |
| hyper | 64 бита | 64-битовое целое число со знаком |
| unsigned hyper | 64 бита | 64-битовое целое число без знака |
| float | 32 бита | Число с плавающей точкой одинарной точности |
| double | 64 бита | Число с плавающей точкой двойной точности |
| opaque | произвольный | Непреобразованные данные (т.е. данные во внутреннем представлении отправителя) |
| string | произвольный | Строка символов ASCII |
| fixed array | произвольный | Массив постоянного размера, состоящий из данных другого типа, внешнее представление которого не содержит информации о его размере |
| counted array | произвольный | Массив переменного размера, состоящий из данных другого типа, внешнее представление которого содержит информацию о его размере |
| structure | произвольный | Агрегат данных, подобный структуре struct языка С |
| discriminated union | произвольный | Структура данных, допускающая использование одной из нескольких альтернативных форм, которая напоминает объединение union языка С или вариантную запись языка Pascal |
| void | 0 битов | Используется, если данные не представлены там, где элемент данных является необязательным (например, в структуре) |
| symbolic constant | произвольный | Символическая константа и связанное с ней значение |
| optional data | произвольный | Допускает нуль или одно вхождение данных |
Типы, представленные в табл. 20.1, охватывают большинство структур данных, используемых в прикладных программах, поскольку они позволяют программисту создавать составные типы из других типов. Например, кроме массива целых чисел, стандарт XDR допускает применение массива структур, причем каждая из этих структур может иметь многочисленные поля, представляющие собой, в свою очередь, массив, структуру или объединение. Таким образом, стандарт XDR предусматривает способы представления данных для большинства структур, которые могут быть определены в программе С.