54.6. Типы данных в сообщениях #
В этом разделе описываются базовые типы данных, применяемые в сообщениях.
- Int
n
(i
) Целое число из
n
бит с сетевым порядком байт (наиболее значащий байт первый). Если указаноi
, это поле будет содержать именно указанное значение, в противном случае значение переменное. Например: Int16, Int32(42).- Int
n
[k
] Массив из
k
n
-битовых целых, каждое записывается с сетевым порядком байт. Длина массиваk
всегда определяется по предыдущему полю сообщения, например Int16[M].- String(
s
) Строка, оканчивающаяся нулём (строка в стиле C). На длину строк ограничение не накладывается. Если указывается
s
, это поле будет содержать именно указанное значение, в противном случае значение переменное. Например: String, String("user").Примечание
Нет никакого предопределённого ограничения длины строки, которую может возвратить сервер. Поэтому при реализации клиента лучше использовать расширяемый буфер, чтобы он мог принять строку любого размера, умещающуюся в памяти. Если такой возможности нет, прочитайте строку целиком и отбросьте последние символы, не помещающиеся в ваш буфер фиксированного размера.
- Byte
n
(c
) В точности
n
байт. Если размер поляn
задаётся не константой, он всегда определяется по предыдущему полю сообщения. Если указываетсяc
, оно задаёт точное значение. Например: Byte2, Byte1('\n').