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.
Checking the stable version of the documentation...
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
bind(port: int, bind_address: String = "*", recv_buf_size: int = 65536) |
|
void |
close() |
connect_to_host(host: String, port: int) |
|
get_local_port() const |
|
get_packet_ip() const |
|
get_packet_port() const |
|
is_bound() const |
|
is_socket_connected() const |
|
join_multicast_group(multicast_address: String, interface_name: String) |
|
leave_multicast_group(multicast_address: String, interface_name: String) |
|
void |
set_broadcast_enabled(enabled: bool) |
set_dest_address(host: String, port: int) |
|
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.
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()).
Devuelve el puerto del par remoto que envió el último paquete (que fue recibido con PacketPeer.get_packet() o PacketPeer.get_var()).
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).
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
var socket = new PacketPeerUdp();
// Server
socket.SetDestAddress("127.0.0.1", 789);
socket.PutPacket("Time to stop".ToAsciiBuffer());
// Client
while (socket.Wait() == OK)
{
string data = socket.GetPacket().GetStringFromASCII();
if (data == "Time to stop")
{
return;
}
}