UDPServer

Helper class to implement a UDP server.

A simple server that opens a UDP socket and returns connected PacketPeerUDP upon receiving new packets. See also PacketPeerUDP.connectToHost. After starting the server (listen), you will need to poll it at regular intervals (e.g. inside Node._process) for it to process new packets, delivering them to the appropriate PacketPeerUDP, and taking new connections. Below a small example of how it can be used:

More...

Members

Aliases

BaseClasses
alias BaseClasses = AliasSeq!(typeof(_GODOT_base), typeof(_GODOT_base).BaseClasses)
Undocumented in source.

Functions

getMaxPendingConnections
long getMaxPendingConnections()
isConnectionAvailable
bool isConnectionAvailable()

Returns true if a packet with a new address/port combination was received on the socket.

isListening
bool isListening()

Returns true if the socket is open and listening on a port.

listen
GodotError listen(long port, String bind_address)

Starts the server by opening a UDP socket listening on the given port. You can optionally specify a bind_address to only listen for packets sent to that address. See also PacketPeerUDP.listen.

opAssign
typeof(null) opAssign(typeof(null) n)
opEquals
bool opEquals(UDPServer other)
opEquals
bool opEquals(typeof(null) n)
poll
GodotError poll()

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

setMaxPendingConnections
void setMaxPendingConnections(long max_pending_connections)
stop
void stop()

Stops the server, closing the UDP socket if open. Will close all connected PacketPeerUDP accepted via takeConnection (remote peers will not be notified).

takeConnection
Ref!PacketPeerUDP takeConnection()

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

toHash
size_t toHash()

Mixins

__anonymous
mixin baseCasts
Undocumented in source.

Properties

maxPendingConnections
long maxPendingConnections [@property getter]
long maxPendingConnections [@property setter]

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

Static functions

_new
UDPServer _new()

Construct a new instance of UDPServer. Note: use memnew!UDPServer instead.

Static variables

_classBindingInitialized
bool _classBindingInitialized;
Undocumented in source.

Structs

GDNativeClassBinding
struct GDNativeClassBinding
Undocumented in source.

Unions

__anonymous
union __anonymous
Undocumented in source.

Variables

_GODOT_internal_name
enum string _GODOT_internal_name;
Undocumented in source.

Mixed In Members

From mixin baseCasts

as
inout(To) as()
Undocumented in source. Be warned that the author may not have intended to support it.
as
inout(To) as()
Undocumented in source. Be warned that the author may not have intended to support it.
as
inout(ToRef) as()
Undocumented in source. Be warned that the author may not have intended to support it.
opCast
template opCast(To)
Undocumented in source.
opCast
template opCast(To)
Undocumented in source.
opCast
template opCast(ToRef)
Undocumented in source.
opCast
void* opCast()
Undocumented in source. Be warned that the author may not have intended to support it.
opCast
godot_object opCast()
Undocumented in source. Be warned that the author may not have intended to support it.
opCast
bool opCast()
Undocumented in source. Be warned that the author may not have intended to support it.

Detailed Description

# server.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()) # Reply so it knows we received the message. peer.put_packet(pkt) # Keep a reference so we can keep contacting the remote peer. peers.append(peer)

for i in range(0, peers.size()): pass # Do something with the connected peers.

# client.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: # Try to contact server udp.put_packet("The answer is... 42!".to_utf8()) if udp.get_available_packet_count() > 0: print("Connected: %s" % udp.get_packet().get_string_from_utf8()) connected = true

Meta