PacketPeer

Hereda: RefCounted < Object

Heredado por: ENetPacketPeer, MultiplayerPeer, PacketPeerDTLS, PacketPeerExtension, PacketPeerStream, PacketPeerUDP, WebRTCDataChannel, WebSocketPeer

Abstracción y clase base para protocolos basados en paquetes.

Descripción

PacketPeer es una abstracción y clase base para protocolos basados en paquetes (como UDP). Proporciona una API para enviar y recibir paquetes tanto como datos en bruto o variables. Esto facilita la transferencia de datos a través de un protocolo, sin tener que codificar los datos como bytes de bajo nivel o tener que preocuparse por el ordenamiento de la red.

Nota: Al exportar a Android, asegúrate de habilitar el permiso INTERNET en el preajuste de exportación de Android antes de exportar el proyecto o usar la implementación con un clic. De lo contrario, Android bloqueará cualquier tipo de comunicación de red.

Propiedades

int

encode_buffer_max_size

8388608

Métodos

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)


Descripciones de Propiedades

int encode_buffer_max_size = 8388608 🔗

  • void set_encode_buffer_max_size(value: int)

  • int get_encode_buffer_max_size()

Tamaño máximo del búfer permitido al codificar Variants. Aumenta este valor para soportar asignaciones de memoria más pesadas.

El método put_var() asigna memoria en la pila, y el búfer utilizado crecerá automáticamente hasta la potencia de dos más cercana para igualar el tamaño de la Variant. Si la Variant es más grande que encode_buffer_max_size, el método devolverá un error con @GlobalScope.ERR_OUT_OF_MEMORY.


Descripciones de Métodos

int get_available_packet_count() const 🔗

Devuelve el número de paquetes actualmente disponibles en el ring-buffer.


PackedByteArray get_packet() 🔗

Recibe un paquete crudo.


Error get_packet_error() const 🔗

Devuelve el estado de error del último paquete recibido (a través de get_packet() y get_var()).


Variant get_var(allow_objects: bool = false) 🔗

Obtiene una Variant. Si allow_objects es true, se permite la decodificación de objetos.

Internamente, esto usa el mismo mecanismo de decodificación que el método @GlobalScope.bytes_to_var().

Advertencia: Los objetos deserializados pueden contener código que se ejecuta. No utilices esta opción si el objeto serializado proviene de fuentes no fiables para evitar posibles amenazas de seguridad, como la ejecución remota de código.


Error put_packet(buffer: PackedByteArray) 🔗

Envía un paquete crudo.


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

Envía una Variant como un paquete. Si full_objects es true, se permite la codificación de objetos (y esto puede incluir código).

Internamente, utiliza el mismo mecanismo de codificación que el método @GlobalScope.var_to_bytes().