UDPServer

Inherits: Reference < Object

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

Métodos

bool

is_connection_available ( ) const

bool

is_listening ( ) const

Error

listen ( int port, String bind_address="*" )

Error

poll ( )

void

stop ( )

PacketPeerUDP

take_connection ( )

Descripciones de Propiedades

  • int max_pending_connections

Default

16

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.


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).


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.