Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

PacketPeerUDP

Hereda: PacketPeer < RefCounted < Object

Paquete de pares UDP.

Descripción

UDP packet peer. Can be used to send and receive raw UDP packets as well as Variants.

Example: Send a packet:

var peer = PacketPeerUDP.new()

# Optionally, you can select the local port used to send the packet.
peer.bind(4444)

peer.set_dest_address("1.1.1.1", 4433)
peer.put_packet("hello".to_utf8_buffer())

Example: Listen for packets:

var peer

func _ready():
    peer = PacketPeerUDP.new()
    peer.bind(4433)


func _process(_delta):
    if peer.get_available_packet_count() > 0:
        var array_bytes = peer.get_packet()
        var packet_string = array_bytes.get_string_from_ascii()
        print("Received message: ", packet_string)

Note: When exporting to Android, make sure to enable the INTERNET permission in the Android export preset before exporting the project or using one-click deploy. Otherwise, network communication of any kind will be blocked by Android.

Métodos

Error

bind(port: int, bind_address: String = "*", recv_buf_size: int = 65536)

void

close()

Error

connect_to_host(host: String, port: int)

int

get_local_port() const

String

get_packet_ip() const

int

get_packet_port() const

bool

is_bound() const

bool

is_socket_connected() const

Error

join_multicast_group(multicast_address: String, interface_name: String)

Error

leave_multicast_group(multicast_address: String, interface_name: String)

void

set_broadcast_enabled(enabled: bool)

Error

set_dest_address(host: String, port: int)

Error

wait()


Descripciones de Métodos

Error bind(port: int, bind_address: String = "*", recv_buf_size: int = 65536) 🔗

Binds this PacketPeerUDP to the specified port and bind_address with a buffer size recv_buf_size, allowing it to receive incoming packets.

If bind_address is set to "*" (default), the peer will be bound on all available addresses (both IPv4 and IPv6).

If bind_address is set to "0.0.0.0" (for IPv4) or "::" (for IPv6), the peer will be bound to all available addresses matching that IP type.

If bind_address is set to any valid address (e.g. "192.168.1.101", "::1", etc.), the peer will only be bound to the interface with that address (or fail if no interface with the given address exists).


void close() 🔗

Cierra el socket UDP subyacente del PacketPeerUDP.


Error connect_to_host(host: String, port: int) 🔗

Llamar a este método conecta este peer UDP al par host/port dado. UDP es en realidad sin conexión, por lo que esta opción solo significa que los paquetes entrantes de diferentes direcciones son automáticamente descartados, y que los paquetes salientes son siempre enviados a la dirección conectada (no se permiten futuras llamadas a set_dest_address()). Este método no envía ningún dato al peer remoto; para ello, utiliza PacketPeer.put_var() o PacketPeer.put_packet() como es habitual. Véase también UDPServer.

Nota: Conectarse al peer remoto no ayuda a protegerte de ataques maliciosos como el spoofing de IP, etc. Piensa en utilizar una técnica de encriptación como TLS o DTLS si crees que tu aplicación está transfiriendo información sensible.


int get_local_port() const 🔗

Returns the local port to which this peer is bound.


String get_packet_ip() const 🔗

Devuelve la IP del par remoto que envió el último paquete (que fue recibido con PacketPeer.get_packet() o PacketPeer.get_var()).


int get_packet_port() const 🔗

Devuelve el puerto del par remoto que envió el último paquete (que fue recibido con PacketPeer.get_packet() o PacketPeer.get_var()).


bool is_bound() const 🔗

Devuelve si este PacketPeerUDP está enlazado a una dirección y puede recibir paquetes.


bool is_socket_connected() const 🔗

Devuelve true si el enchufe UDP está abierto y se ha conectado a una dirección remota. Véase connect_to_host().


Error join_multicast_group(multicast_address: String, interface_name: String) 🔗

Joins the multicast group specified by multicast_address using the interface identified by interface_name.

You can join the same multicast group with multiple interfaces. Use IP.get_local_interfaces() to know which are available.

Note: Some Android devices might require the CHANGE_WIFI_MULTICAST_STATE permission for multicast to work.


Error leave_multicast_group(multicast_address: String, interface_name: String) 🔗

Removes the interface identified by interface_name from the multicast group specified by multicast_address.


void set_broadcast_enabled(enabled: bool) 🔗

Habilita o deshabilita el envío de paquetes de emisión (por ejemplo, set_dest_address("255.255.255.255", 4343)). Esta opción está deshabilitada por defecto.

Nota: Algunos dispositivos Android pueden requerir el permiso CHANGE_WIFI_MULTICAST_STATE y que esta opción esté habilitada para recibir también paquetes de emisión.


Error set_dest_address(host: String, port: int) 🔗

Establece la dirección y el puerto de destino para el envío de paquetes y variables. Un nombre de host será resuelto usando DNS si es necesario.

Nota: set_broadcast_enabled() debe estar habilitado antes de enviar paquetes a una dirección de difusión (por ejemplo, 255.255.255.255).


Error wait() 🔗

Waits for a packet to arrive on the bound address. See bind().

Note: wait() can't be interrupted once it has been called. This can be worked around by allowing the other party to send a specific "death pill" packet like this:

socket = PacketPeerUDP.new()
# Server
socket.set_dest_address("127.0.0.1", 789)
socket.put_packet("Time to stop".to_ascii_buffer())

# Client
while socket.wait() == OK:
    var data = socket.get_packet().get_string_from_ascii()
    if data == "Time to stop":
        return