2020-02-15 21:34:00 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								<?xml version="1.0" encoding="UTF-8" ?>  
						 
					
						
							
								
									
										
										
										
											2023-07-06 10:08:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								<class  name= "DTLSServer"  inherits= "RefCounted"  xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"  xsi:noNamespaceSchemaLocation= "../class.xsd" >  
						 
					
						
							
								
									
										
										
										
											2020-02-15 21:34:00 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									<brief_description > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Helper class to implement a DTLS server.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									</brief_description> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									<description > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										This class is used to store the state of a DTLS server. Upon [method setup] it converts connected [PacketPeerUDP] to [PacketPeerDTLS] accepting them via [method take_connection] as DTLS clients. Under the hood, this class is used to store the DTLS state and cookies of the server. The reason of why the state and cookies are needed is outside of the scope of this documentation.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Below a small example of how to use it:
							 
						 
					
						
							
								
									
										
										
										
											2020-09-13 14:45:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										[codeblocks]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[gdscript]
							 
						 
					
						
							
								
									
										
										
										
											2023-01-15 13:26:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										# server_node.gd
							 
						 
					
						
							
								
									
										
										
										
											2020-02-15 21:34:00 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										extends Node
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var dtls := DTLSServer.new()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var server := UDPServer.new()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var peers = []
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										func _ready():
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    server.listen(4242)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    var key = load("key.key") # Your private key.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    var cert = load("cert.crt") # Your X509 certificate.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    dtls.setup(key, cert)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										func _process(delta):
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    while server.is_connection_available():
							 
						 
					
						
							
								
									
										
										
										
											2023-03-03 17:42:32 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										        var peer: PacketPeerUDP = server.take_connection()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        var dtls_peer: PacketPeerDTLS = dtls.take_connection(peer)
							 
						 
					
						
							
								
									
										
										
										
											2020-02-15 21:34:00 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										        if dtls_peer.get_status() != PacketPeerDTLS.STATUS_HANDSHAKING:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										            continue # It is normal that 50% of the connections fails due to cookie exchange.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        print("Peer connected!")
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        peers.append(dtls_peer)
							 
						 
					
						
							
								
									
										
										
										
											2020-09-13 14:45:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-15 21:34:00 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										    for p in peers:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        p.poll() # Must poll to update the state.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        if p.get_status() == PacketPeerDTLS.STATUS_CONNECTED:
							 
						 
					
						
							
								
									
										
										
										
											2020-02-19 09:55:47 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										            while p.get_available_packet_count() >  0:
							 
						 
					
						
							
								
									
										
										
										
											2020-02-15 21:34:00 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										                print("Received message from client: %s" % p.get_packet().get_string_from_utf8())
							 
						 
					
						
							
								
									
										
										
										
											2023-03-13 22:58:27 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										                p.put_packet("Hello DTLS client".to_utf8_buffer())
							 
						 
					
						
							
								
									
										
										
										
											2020-09-13 14:45:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										[/gdscript]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[csharp]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// ServerNode.cs
							 
						 
					
						
							
								
									
										
										
										
											2023-01-31 18:21:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										using Godot;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										public partial class ServerNode : Node
							 
						 
					
						
							
								
									
										
										
										
											2020-09-13 14:45:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										{
							 
						 
					
						
							
								
									
										
										
										
											2023-01-31 18:21:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										    private DtlsServer _dtls = new DtlsServer();
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    private UdpServer _server = new UdpServer();
							 
						 
					
						
							
								
									
										
										
										
											2024-03-20 13:39:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										    private Godot.Collections.Array< PacketPeerDtls>  _peers = new Godot.Collections.Array< PacketPeerDtls> ();
							 
						 
					
						
							
								
									
										
										
										
											2023-01-31 18:21:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-13 14:45:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										    public override void _Ready()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    {
							 
						 
					
						
							
								
									
										
										
										
											2023-01-31 18:21:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										        _server.Listen(4242);
							 
						 
					
						
							
								
									
										
										
										
											2020-09-13 14:45:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										        var key = GD.Load< CryptoKey> ("key.key"); // Your private key.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        var cert = GD.Load< X509Certificate> ("cert.crt"); // Your X509 certificate.
							 
						 
					
						
							
								
									
										
										
										
											2023-01-31 18:21:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										        _dtls.Setup(key, cert);
							 
						 
					
						
							
								
									
										
										
										
											2020-09-13 14:45:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-31 18:21:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										    public override void _Process(double delta)
							 
						 
					
						
							
								
									
										
										
										
											2020-09-13 14:45:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										    {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        while (Server.IsConnectionAvailable())
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        {
							 
						 
					
						
							
								
									
										
										
										
											2024-03-20 13:39:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										            PacketPeerUdp peer = _server.TakeConnection();
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										            PacketPeerDtls dtlsPeer = _dtls.TakeConnection(peer);
							 
						 
					
						
							
								
									
										
										
										
											2023-01-31 18:21:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										            if (dtlsPeer.GetStatus() != PacketPeerDtls.Status.Handshaking)
							 
						 
					
						
							
								
									
										
										
										
											2020-09-13 14:45:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										            {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										                continue; // It is normal that 50% of the connections fails due to cookie exchange.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										            }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										            GD.Print("Peer connected!");
							 
						 
					
						
							
								
									
										
										
										
											2023-01-31 18:21:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										            _peers.Add(dtlsPeer);
							 
						 
					
						
							
								
									
										
										
										
											2020-09-13 14:45:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										        }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-31 18:21:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										        foreach (var p in _peers)
							 
						 
					
						
							
								
									
										
										
										
											2020-09-13 14:45:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										        {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										            p.Poll(); // Must poll to update the state.
							 
						 
					
						
							
								
									
										
										
										
											2023-01-31 18:21:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										            if (p.GetStatus() == PacketPeerDtls.Status.Connected)
							 
						 
					
						
							
								
									
										
										
										
											2020-09-13 14:45:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										            {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										                while (p.GetAvailablePacketCount() >  0)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										                {
							 
						 
					
						
							
								
									
										
										
										
											2023-01-31 18:21:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										                    GD.Print($"Received Message From Client: {p.GetPacket().GetStringFromUtf8()}");
							 
						 
					
						
							
								
									
										
										
										
											2023-03-13 22:58:27 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										                    p.PutPacket("Hello DTLS Client".ToUtf8Buffer());
							 
						 
					
						
							
								
									
										
										
										
											2020-09-13 14:45:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										                }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										            }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[/csharp]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[/codeblocks]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[codeblocks]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[gdscript]
							 
						 
					
						
							
								
									
										
										
										
											2023-01-15 13:26:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										# client_node.gd
							 
						 
					
						
							
								
									
										
										
										
											2020-02-15 21:34:00 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										extends Node
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var dtls := PacketPeerDTLS.new()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var udp := PacketPeerUDP.new()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var connected = false
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										func _ready():
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    udp.connect_to_host("127.0.0.1", 4242)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    dtls.connect_to_peer(udp, false) # Use true in production for certificate validation!
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										func _process(delta):
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    dtls.poll()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    if dtls.get_status() == PacketPeerDTLS.STATUS_CONNECTED:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        if !connected:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										            # Try to contact server
							 
						 
					
						
							
								
									
										
										
										
											2023-03-13 22:58:27 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										            dtls.put_packet("The answer is... 42!".to_utf8_buffer())
							 
						 
					
						
							
								
									
										
										
										
											2020-02-19 09:55:47 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										        while dtls.get_available_packet_count() >  0:
							 
						 
					
						
							
								
									
										
										
										
											2020-02-15 21:34:00 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										            print("Connected: %s" % dtls.get_packet().get_string_from_utf8())
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										            connected = true
							 
						 
					
						
							
								
									
										
										
										
											2020-09-13 14:45:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										[/gdscript]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[csharp]
							 
						 
					
						
							
								
									
										
										
										
											2023-01-31 18:21:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// ClientNode.cs
							 
						 
					
						
							
								
									
										
										
										
											2020-09-13 14:45:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										using Godot;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										using System.Text;
							 
						 
					
						
							
								
									
										
										
										
											2023-01-31 18:21:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										public partial class ClientNode : Node
							 
						 
					
						
							
								
									
										
										
										
											2020-09-13 14:45:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										{
							 
						 
					
						
							
								
									
										
										
										
											2023-01-31 18:21:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										    private PacketPeerDtls _dtls = new PacketPeerDtls();
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    private PacketPeerUdp _udp = new PacketPeerUdp();
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    private bool _connected = false;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-13 14:45:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										    public override void _Ready()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    {
							 
						 
					
						
							
								
									
										
										
										
											2023-01-31 18:21:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										        _udp.ConnectToHost("127.0.0.1", 4242);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        _dtls.ConnectToPeer(_udp, validateCerts: false); // Use true in production for certificate validation!
							 
						 
					
						
							
								
									
										
										
										
											2020-09-13 14:45:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-31 18:21:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										    public override void _Process(double delta)
							 
						 
					
						
							
								
									
										
										
										
											2020-09-13 14:45:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										    {
							 
						 
					
						
							
								
									
										
										
										
											2023-01-31 18:21:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										        _dtls.Poll();
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        if (_dtls.GetStatus() == PacketPeerDtls.Status.Connected)
							 
						 
					
						
							
								
									
										
										
										
											2020-09-13 14:45:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										        {
							 
						 
					
						
							
								
									
										
										
										
											2023-01-31 18:21:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										            if (!_connected)
							 
						 
					
						
							
								
									
										
										
										
											2020-09-13 14:45:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										            {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										                // Try to contact server
							 
						 
					
						
							
								
									
										
										
										
											2023-03-13 22:58:27 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										                _dtls.PutPacket("The Answer Is..42!".ToUtf8Buffer());
							 
						 
					
						
							
								
									
										
										
										
											2020-09-13 14:45:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										            }
							 
						 
					
						
							
								
									
										
										
										
											2023-01-31 18:21:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										            while (_dtls.GetAvailablePacketCount() >  0)
							 
						 
					
						
							
								
									
										
										
										
											2020-09-13 14:45:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										            {
							 
						 
					
						
							
								
									
										
										
										
											2023-01-31 18:21:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										                GD.Print($"Connected: {_dtls.GetPacket().GetStringFromUtf8()}");
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										                _connected = true;
							 
						 
					
						
							
								
									
										
										
										
											2020-09-13 14:45:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										            }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[/csharp]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[/codeblocks]
							 
						 
					
						
							
								
									
										
										
										
											2020-02-15 21:34:00 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									</description> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									<tutorials > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									</tutorials> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									<methods > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										<method  name= "setup" > 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-30 15:28:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											<return  type= "int"  enum= "Error"  /> 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 01:51:35 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											<param  index= "0"  name= "server_options"  type= "TLSOptions"  /> 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-15 21:34:00 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											<description > 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 01:51:35 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												Setup the DTLS server to use the given [param server_options]. See [method TLSOptions.server].
							 
						 
					
						
							
								
									
										
										
										
											2020-02-15 21:34:00 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											</description> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										</method> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										<method  name= "take_connection" > 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-30 15:28:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											<return  type= "PacketPeerDTLS"  /> 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-06 21:11:48 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											<param  index= "0"  name= "udp_peer"  type= "PacketPeerUDP"  /> 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-15 21:34:00 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											<description > 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-12 13:13:27 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												Try to initiate the DTLS handshake with the given [param udp_peer] which must be already connected (see [method PacketPeerUDP.connect_to_host]).
							 
						 
					
						
							
								
									
										
										
										
											2021-10-05 14:24:34 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												[b]Note:[/b] You must check that the state of the return PacketPeerUDP is [constant PacketPeerDTLS.STATUS_HANDSHAKING], as it is normal that 50% of the new connections will be invalid due to cookie exchange.
							 
						 
					
						
							
								
									
										
										
										
											2020-02-15 21:34:00 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											</description> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										</method> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									</methods> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								</class>