StreamPeer

Наследует: RefCounted < Object

Наследуется от: StreamPeerBuffer, StreamPeerExtension, StreamPeerGZIP, StreamPeerSocket, StreamPeerTLS

Абстрактный базовый класс для взаимодействия с потоками.

Описание

StreamPeer — абстрактный базовый класс, в основном используемый для потоковых протоколов (таких как TCP). Он предоставляет API для отправки и получения данных через потоки в виде необработанных данных или строк.

Примечание: При экспорте в Android обязательно включите разрешение INTERNET в предустановке экспорта Android перед экспортом проекта или использованием развертывания в один клик. В противном случае сетевое взаимодействие любого рода будет заблокировано Android.

Свойства

bool

big_endian

false

Методы

int

get_8()

int

get_16()

int

get_32()

int

get_64()

int

get_available_bytes() const

Array

get_data(bytes: int)

float

get_double()

float

get_float()

float

get_half()

Array

get_partial_data(bytes: int)

String

get_string(bytes: int = -1)

int

get_u8()

int

get_u16()

int

get_u32()

int

get_u64()

String

get_utf8_string(bytes: int = -1)

Variant

get_var(allow_objects: bool = false)

void

put_8(value: int)

void

put_16(value: int)

void

put_32(value: int)

void

put_64(value: int)

Error

put_data(data: PackedByteArray)

void

put_double(value: float)

void

put_float(value: float)

void

put_half(value: float)

Array

put_partial_data(data: PackedByteArray)

void

put_string(value: String)

void

put_u8(value: int)

void

put_u16(value: int)

void

put_u32(value: int)

void

put_u64(value: int)

void

put_utf8_string(value: String)

void

put_var(value: Variant, full_objects: bool = false)


Описания свойств

bool big_endian = false 🔗

  • void set_big_endian(value: bool)

  • bool is_big_endian_enabled()

Если true, этот StreamPeer будет использовать формат big-endian для кодирования и декодирования.


Описания метода

int get_8() 🔗

Получает знаковый байт из потока.


int get_16() 🔗

Получает из потока знаковое 16-битное значение.


int get_32() 🔗

Получает из потока знаковое 32-битное значение.


int get_64() 🔗

Получает из потока знаковое 64-битное значение.


int get_available_bytes() const 🔗

Возвращает количество байтов, доступных этому StreamPeer.


Array get_data(bytes: int) 🔗

Returns a chunk data with the received bytes, as an Array containing two elements: an Error constant and a PackedByteArray. bytes is the number of bytes to be received. If not enough bytes are available, the function will block until the desired amount is received.


float get_double() 🔗

Получает из потока число с плавающей точкой двойной точности.


float get_float() 🔗

Получает из потока число с плавающей точкой одинарной точности.


float get_half() 🔗

Получает из потока число с плавающей точкой половинной точности.


Array get_partial_data(bytes: int) 🔗

Returns a chunk data with the received bytes, as an Array containing two elements: an Error constant and a PackedByteArray. bytes is the number of bytes to be received. If not enough bytes are available, the function will return how many were actually received.


String get_string(bytes: int = -1) 🔗

Получает строку ASCII с длиной байта bytes из потока. Если bytes отрицательный (по умолчанию), длина будет считана из потока с использованием обратного процесса put_string().


int get_u8() 🔗

Получает беззнаковый байт из потока.


int get_u16() 🔗

Получает из потока беззнаковое 16-битное значение.


int get_u32() 🔗

Получает из потока беззнаковое 32-битное значение.


int get_u64() 🔗

Получает беззнаковое 64-битное значение из потока.


String get_utf8_string(bytes: int = -1) 🔗

Получает строку UTF-8 с длиной байта bytes из потока (это декодирует строку, отправленную как UTF-8). Если bytes отрицательный (по умолчанию), длина будет считана из потока с использованием обратного процесса put_utf8_string().


Variant get_var(allow_objects: bool = false) 🔗

Получает Variant из потока. Если allow_objects равен true, декодирование объектов разрешено.

Внутренне это использует тот же механизм декодирования, что и метод @GlobalScope.bytes_to_var().

Предупреждение: Десериализованные объекты могут содержать код, который выполняется. Не используйте эту опцию, если сериализованный объект поступает из ненадежных источников, чтобы избежать потенциальных угроз безопасности, таких как удаленное выполнение кода.


void put_8(value: int) 🔗

Помещает в поток знаковый байт.


void put_16(value: int) 🔗

Помещает в поток знаковое 16-битное значение.


void put_32(value: int) 🔗

Помещает в поток 32-битное значение со знаком.


void put_64(value: int) 🔗

Помещает в поток знаковое 64-битное значение.


Error put_data(data: PackedByteArray) 🔗

Отправляет часть данных через соединение, блокируя при необходимости, пока данные не будут отправлены. Эта функция возвращает код Error.


void put_double(value: float) 🔗

Помещает в поток число с плавающей точкой двойной точности.


void put_float(value: float) 🔗

Помещает в поток число с плавающей точкой одинарной точности.


void put_half(value: float) 🔗

Помещает в поток число с плавающей точкой половинной точности.


Array put_partial_data(data: PackedByteArray) 🔗

Отправляет часть данных через соединение. Если все данные не могут быть отправлены сразу, будет отправлена только часть. Эта функция возвращает два значения: код Error и целое число, описывающее, сколько данных было фактически отправлено.


void put_string(value: String) 🔗

Помещает в поток строку ASCII с нулевым завершением, к которой добавляется 32-битное беззнаковое целое число, представляющее ее размер.

Примечание: Чтобы поместить строку ASCII без добавления ее размера, можно использовать put_data():

put_data("Hello world".to_ascii_buffer())

void put_u8(value: int) 🔗

Помещает в поток беззнаковый байт.


void put_u16(value: int) 🔗

Помещает в поток беззнаковое 16-битное значение.


void put_u32(value: int) 🔗

Помещает в поток беззнаковое 32-битное значение.


void put_u64(value: int) 🔗

Помещает в поток беззнаковое 64-битное значение.


void put_utf8_string(value: String) 🔗

Помещает в поток строку UTF-8 с нулевым завершением, к которой добавляется 32-битное беззнаковое целое число, представляющее ее размер.

Примечание: Чтобы поместить строку UTF-8 без добавления ее размера, можно использовать put_data():

put_data("Hello world".to_utf8_buffer())

void put_var(value: Variant, full_objects: bool = false) 🔗

Помещает Variant в поток. Если full_objects равен true, кодирование объектов разрешено (и потенциально может включать код).

Внутри это использует тот же механизм кодирования, что и метод @GlobalScope.var_to_bytes().