PacketPeer

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

Наследуется от: ENetPacketPeer, MultiplayerPeer, PacketPeerDTLS, PacketPeerExtension, PacketPeerStream, PacketPeerUDP, WebRTCDataChannel, WebSocketPeer

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

Описание

PacketPeer — это абстракция и базовый класс для пакетных протоколов (например, UDP). Он предоставляет API для отправки и получения пакетов как в виде необработанных данных, так и в виде переменных. Это упрощает передачу данных по протоколу, без необходимости кодировать данные как низкоуровневые байты или беспокоиться о порядке сети.

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

Свойства

int

encode_buffer_max_size

8388608

Методы

int

get_available_packet_count() const

PackedByteArray

get_packet()

Error

get_packet_error() const

Variant

get_var(allow_objects: bool = false)

Error

put_packet(buffer: PackedByteArray)

Error

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


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

int encode_buffer_max_size = 8388608 🔗

  • void set_encode_buffer_max_size(value: int)

  • int get_encode_buffer_max_size()

Максимальный размер буфера, разрешенный при кодировании Variant. Увеличьте это значение для поддержки более интенсивного выделения памяти.

Метод put_var() выделяет память в стеке, и используемый буфер будет автоматически увеличиваться до ближайшей степени двойки, чтобы соответствовать размеру Variant. Если Variant больше, чем encode_buffer_max_size, метод выдаст ошибку с @GlobalScope.ERR_OUT_OF_MEMORY.


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

int get_available_packet_count() const 🔗

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


PackedByteArray get_packet() 🔗

Получает необработанный пакет.


Error get_packet_error() const 🔗

Возвращает состояние ошибки последнего полученного пакета (через get_packet() и get_var()).


Variant get_var(allow_objects: bool = false) 🔗

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

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

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


Error put_packet(buffer: PackedByteArray) 🔗

Отправляет необработанный пакет.


Error put_var(var: Variant, full_objects: bool = false) 🔗

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

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