diff options
Diffstat (limited to 'doc/classes/UDPServer.xml')
-rw-r--r-- | doc/classes/UDPServer.xml | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/doc/classes/UDPServer.xml b/doc/classes/UDPServer.xml new file mode 100644 index 0000000000..f3c865c392 --- /dev/null +++ b/doc/classes/UDPServer.xml @@ -0,0 +1,98 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="UDPServer" inherits="Reference" version="4.0"> + <brief_description> + Helper class to implement a UDP server. + </brief_description> + <description> + A simple server that opens a UDP socket and returns connected [PacketPeerUDP] upon receiving new packets. See also [method PacketPeerUDP.connect_to_host]. + Below a small example of how it can be used: + [codeblock] + # server.gd + extends Node + + var server := UDPServer.new() + var peers = [] + + func _ready(): + server.listen(4242) + + func _process(delta): + 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. + + [/codeblock] + [codeblock] + # 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 + [/codeblock] + </description> + <tutorials> + </tutorials> + <methods> + <method name="is_connection_available" qualifiers="const"> + <return type="bool"> + </return> + <description> + Returns [code]true[/code] if a packet with a new address/port combination is received on the socket. + </description> + </method> + <method name="is_listening" qualifiers="const"> + <return type="bool"> + </return> + <description> + Returns [code]true[/code] if the socket is open and listening on a port. + </description> + </method> + <method name="listen"> + <return type="int" enum="Error"> + </return> + <argument index="0" name="port" type="int"> + </argument> + <argument index="1" name="bind_address" type="String" default=""*""> + </argument> + <description> + Starts the server by opening a UDP socket listening on the given port. You can optionally specify a [code]bind_address[/code] to only listen for packets sent to that address. See also [method PacketPeerUDP.listen]. + </description> + </method> + <method name="stop"> + <return type="void"> + </return> + <description> + Stops the server, closing the UDP socket if open. Will not disconnect any connected [PacketPeerUDP]. + </description> + </method> + <method name="take_connection"> + <return type="PacketPeerUDP"> + </return> + <description> + Returns a [PacketPeerUDP] connected to the address/port combination of the first packet in queue. Will return [code]null[/code] if no packet is in queue. See also [method PacketPeerUDP.connect_to_host]. + </description> + </method> + </methods> + <constants> + </constants> +</class> |