StreamPeer

Успадковує: RefCounted < Object

Успадковано від: StreamPeerBuffer, StreamPeerExtension, StreamPeerGZIP, StreamPeerTCP, StreamPeerTLS

Абстрактний базовий клас взаємодії з потоками.

Опис

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

Note: При експорті до 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 буде використовувати великий формат кодування та декодування.


Описи методів

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) 🔗

Повертає з отриманими байтами. Кількість байтів, які будуть отримані, можна запитати в аргументі bytes. Якщо не вистачає байтів, функція заблокує до отримання бажаної кількості. Ця функція повертає два значення, код Error та масив даних.


float get_double() 🔗

Gets a double-precision float from the потік.


float get_float() 🔗

Отримує число з плаваючою комою одинарної точності з потоку.


float get_half() 🔗

Отримує плаваюче значення напівточності з потоку.


Array get_partial_data(bytes: int) 🔗

Повертає фрагмент даних з отриманими байтами. Кількість байтів, які потрібно отримати, можна запитати в аргументі bytes. Якщо доступних байтів недостатньо, функція поверне кількість, яка була фактично отримана. Ця функція повертає два значення: код помилки Error та масив даних.


String get_string(bytes: int = -1) 🔗

Gets ASCII string з tote-length bytes від потоку. Якщо bytes є негативним (default) довжина буде читати з потоку, використовуючи зворотний процес 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 з byte-length 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) 🔗

Поставить Варіант в потік. Якщо full_objects є true кодування об'єктів дозволено (і може потенційно включати код).

Внутрішня, це використовує той же механізм кодування, як GlobalScope.var_to_bytes().