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