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.

UDPServer

Hérite de : RefCounted < Object

Une classe d'aide pour implémenter un serveur UDP.

Description

Un simple serveur qui ouvre un socket UDP et renvoie les PacketPeerUDP connectés lors de la réception de nouveaux paquets. Voir aussi PacketPeerUDP.connect_to_host().

Après avoir lancé le serveur (avec listen()), vous devez appeler poll() régulièrement (ex. à l'intérieur de Node._process()) pour qu'il traite les nouveaux paquets, les envoie aux PacketPeerUDP appropriés, ou reçoit de nouvelles connexions.

Voici une petit exemple sur la façon de l'utiliser :

# noeud_serveur.gd
class_name NoeudServeur
extends Node

var serveur = UDPServer.new()
var pairs = []

func _ready():
    server.listen(4242)

func _process(delta):
    serveur.poll() # Important !
    if serveur.is_connection_available():
        var pair = serveur.take_connection()
        var paquet = pair.get_packet()
        print("Pair accepté : %s:%s" % [pair.get_packet_ip(), pair.get_packet_port()])
        print("Données reçues : %s" % [paquet.get_string_from_utf8()])
        # Réponse pour qu'il sache que nous avons reçu le message
        pair.put_packet(paquet)
        # Gardons une référence afin que nous pussions contacter le pair distant.
        pairs.append(pair)

    for i in range(0, pairs.size()):
        pass # Faire quelque chose avec les pairs connectés.
# noeud_client.gd
class_name NoeudClient
extends Node

var udp = PacketPeerUDP.new()
var connecte = false

func _ready():
    udp.connect_to_host("127.0.0.1", 4242)

func _process(delta):
    if!connecte:
        # Essayer de contacter le serveur
        udp.put_packet("La réponse est ... 42 !".to_utf8_buffer())
    if udp.get_available_packet_count() > 0:
        print("Connecté : %s" % udp.get_packet().get_string_from_utf8())
        connecte = true

Propriétés

int

max_pending_connections

16

Méthodes

int

get_local_port() const

bool

is_connection_available() const

bool

is_listening() const

Error

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

Error

poll()

void

stop()

PacketPeerUDP

take_connection()


Descriptions des propriétés

int max_pending_connections = 16 🔗

  • void set_max_pending_connections(value: int)

  • int get_max_pending_connections()

Define the maximum number of pending connections, during poll(), any new pending connection exceeding that value will be automatically dropped. Setting this value to 0 effectively prevents any new pending connection to be accepted (e.g. when all your players have connected).


Descriptions des méthodes

int get_local_port() const 🔗

Returns the local port this server is listening to.


bool is_connection_available() const 🔗

Renvoie true si un paquet avec une nouvelle combinaison adresse / port a été reçu sur la socket.


bool is_listening() const 🔗

Renvoie true si le socket est ouvert et écoute à un port.


Error listen(port: int, bind_address: String = "*") 🔗

Démarre le serveur en ouvrant un socket UDP écoutant le port donné. Vous pouvez en option spécifier une adresse bind_address pour écouter seulement les paquets envoyés à cette adresse. Voir aussi PacketPeerUDP.bind().


Error poll() 🔗

Call this method at regular intervals (e.g. inside Node._process()) to process new packets. Any packet from a known address/port pair will be delivered to the appropriate PacketPeerUDP, while any packet received from an unknown address/port pair will be added as a pending connection (see is_connection_available() and take_connection()). The maximum number of pending connections is defined via max_pending_connections.


void stop() 🔗

Arrête le serveur, fermant le socket UDP si ouvert. Fermera toutes les connexions PacketPeerUDP acceptées avec take_connection() (les pairs distantes ne seront pas notifiés).


PacketPeerUDP take_connection() 🔗

Returns the first pending connection (connected to the appropriate address/port). Will return null if no new connection is available. See also is_connection_available(), PacketPeerUDP.connect_to_host().