Servidor UDP para Delphi

Escucha datagramas UDP en un puerto y despacha cada uno a tu aplicación. El mismo motor que impulsa TsgcSTUNServer y TsgcTURNServer.

TsgcUDPServer

Listener UDP de alto rendimiento — asocia a un puerto, recibe datagramas de cualquier par, responde a endpoints concretos, todo a través de un único socket asociado.

Clase del componente

TsgcUDPServer

Protocolo

UDP (RFC 768)

Plataformas

Windows, macOS, Linux, iOS, Android

Edición

Professional / Enterprise

Coloca, escucha, responde

Configura Port, Active := True y luego gestiona los datagramas entrantes en OnUDPRead y responde mediante Socket.WriteData — un socket, cualquier número de pares remotos.

uses
  sgcP2P, sgcUDP_Classes, sgcSocket_Classes;

// TFormUDPServer contiene FServer: TsgcUDPServer y el handler

procedure TFormUDPServer.StartServer;
begin
  FServer := TsgcUDPServer.Create(nil);
  FServer.Port := 4000;

  FServer.OnUDPRead := OnUDPRead;

  FServer.Active := True;
end;

procedure TFormUDPServer.OnUDPRead(Sender: TObject;
  Socket: TsgcUDPSocket; Bytes: TsgcBytes);
begin
  // devuelve el eco al par del que vino el datagrama
  Socket.WriteData(TBytes(Bytes));
end;
// includes: sgcP2P.hpp, sgcUDP_Classes.hpp, sgcSocket_Classes.hpp
TsgcUDPServer *Server = new TsgcUDPServer(this);
Server->Port = 4000;
Server->OnUDPRead = OnUDPRead;
Server->Active = true;

void __fastcall TFormUDPServer::OnUDPRead(TObject *Sender,
  TsgcUDPSocket *Socket, TsgcBytes Bytes)
{
  // devuelve el eco al par del que vino el datagrama
  Socket->WriteData(TBytes(Bytes));
}

Qué incluye

Un listener UDP que entrega cada datagrama a tu handler junto con el TsgcUDPSocket por el que llegó, que es también la ruta de respuesta.

Puerto único, muchos pares

Un único socket asociado gestiona datagramas de cualquier número de endpoints remotos. Cada OnUDPRead se dispara con un TsgcUDPSocket cuyos IP y Port identifican al emisor.

Ruta de respuesta

Socket.WriteData devuelve un datagrama al par de origen usando el mismo socket, y el servidor incluye además WriteData(ip, port, ...) para cualquier otro endpoint.

WatchDog

WatchDog reinicia el listener cuando deja de responder, y OnBeforeWatchDog te da la oportunidad de vetar el reinicio. OnStartup y OnShutdown delimitan cada binding.

IPv4 / IPv6 y varios bindings

Configura IPVersion para la familia, o añade una entrada por dirección a Bindings con AddBinding, RemoveBinding y GetBinding cuando el servidor tenga que escuchar en varias.

Usado bajo TsgcSTUNServer / TsgcTURNServer

Los servidores STUN y TURN (implementaciones completas de RFC 8489 / 8656) se construyen sobre este componente — puedes hacer lo mismo para cualquier protocolo UDP personalizado.

DTLS

Configura DTLS := True y rellena DTLSOptions para ejecutar los datagramas dentro de una sesión DTLS, con OnDTLSVerifyPeer decidiendo qué certificados de par aceptas.

Especificaciones y referencias

Fuentes autorizadas del protocolo que implementa este componente.

Documentación y demos

Accede a la referencia del componente, descarga el proyecto demo listo para ejecutar y la versión de prueba.

Ayuda en línea — TsgcUDPServer Referencia completa de propiedades, métodos y eventos de este componente.
Proyecto demo — Demos\35.P2P\01.UDP_Server_Client Proyecto de ejemplo listo para ejecutar. Se incluye dentro del paquete sgcWebSockets — descarga la prueba abajo.
Documento técnico (PDF) Características, inicio rápido, ejemplos de código para Delphi y C++ Builder y referencias a fuentes primarias — solo este componente.
Manual de usuario (PDF) Manual completo que cubre cada componente de la biblioteca.
La mejor opción: All-AccessTodos los productos de eSeGeCe, con Premium Support incluido, desde €1,059 al año.
Ver precios de All-Access

¿Listo para ejecutar un servidor UDP?

Descarga la prueba gratuita y escucha datagramas UDP desde Delphi.