UDPServer¶
Clase de ayudante para implementar un servidor UDP.
Descripción¶
Un simple servidor que abre un socket UDP y devuelve conectado PacketPeerUDP al recibir nuevos paquetes. Véase también PacketPeerUDP.connect_to_host.
Después de iniciar el servidor (listen), necesitará poll a intervalos regulares (por ejemplo, dentro de Node._process) para que procese nuevos paquetes, entregándolos al PacketPeerUDP apropiado, y tomando nuevas conexiones.
A continuación se muestra un pequeño ejemplo de cómo puede utilizarse:
# Servidor.gd
extends Node
var server := UDPServer.new()
var peers = []
func _ready():
server.listen(4242)
func _process(delta):
server.poll() # ¡Important!
if server.is_connection_available():
var peer : PacketPeerUDP = server.take_connection()
var pkt = peer.get_packet()
print("Accepted peer: %s:%s" % [peer.get_packet_ip(), peer.get_packet_port()])
print("Received data: %s" % [pkt.get_string_from_utf8()])
# Responde para que sepa que hemos recibido el mensaje.
peer.put_packet(pkt)
# Mantén una referencia para que podamos seguir contactando con el par remoto.
peers.append(peer)
for i in range(0, peers.size()):
pass # Haz algo con los pares conectados.
# cliente.gd
extends Node
var udp := PacketPeerUDP.new()
var connected = false
func _ready():
udp.connect_to_host("127.0.0.1", 4242)
func _process(delta):
if !connected:
# Intenta contactar con el servidor
udp.put_packet("La respuesta es... 42!".to_utf8())
if udp.get_available_packet_count() > 0:
print("Connected: %s" % udp.get_packet().get_string_from_utf8())
connected = true
Propiedades¶
|
Métodos¶
is_connection_available ( ) const |
|
is_listening ( ) const |
|
poll ( ) |
|
void |
stop ( ) |
take_connection ( ) |
Descripciones de Propiedades¶
int max_pending_connections
Default |
|
Setter |
set_max_pending_connections(value) |
Getter |
get_max_pending_connections() |
Definir el número máximo de conexiones pendientes, durante el poll, cualquier nueva conexión pendiente que supere ese valor será automáticamente eliminada. Ajustar este valor a 0
impide efectivamente que se acepte cualquier nueva conexión pendiente (por ejemplo, cuando todos tus jugadores se han conectado).
Descripciones de Métodos¶
bool is_connection_available ( ) const
Devuelve true
si un paquete con una nueva combinación de dirección/puerto fue recibido en el socket.
bool is_listening ( ) const
Devuelve true
si el socket está abierto y escuchando en un puerto.
Inicia el servidor abriendo un socket UDP que escucha en el puerto dado. Opcionalmente puede especificar un bind_address
para que sólo escuche los paquetes enviados a esa dirección. Véase también PacketPeerUDP.listen.
Error poll ( )
Llame a este método a intervalos regulares (por ejemplo, dentro de Node._process) para procesar nuevos paquetes. Y el paquete del par dirección/puerto conocido será entregado al PacketPeerUDP apropiado, cualquier paquete recibido de un par dirección/puerto desconocido será añadido como una conexión pendiente (ver is_connection_available, take_connection). El número máximo de conexiones pendientes se define mediante max_pending_connections.
void stop ( )
Detiene el servidor, cerrando el enchufe UDP si está abierto. Cerrará todos los PacketPeerUDP conectados aceptados a través del take_connection (los compañeros remotos no serán notificados).
PacketPeerUDP take_connection ( )
Devuelve la primera conexión pendiente (conectada a la dirección/puerto apropiado). Devolverá null
si no hay una nueva conexión disponible. Ver también is_connection_available, PacketPeerUDP.connect_to_host.