Server UDP per Delphi

Ascolta datagrammi UDP su una porta e instrada ciascuno alla tua applicazione. Lo stesso engine che alimenta TsgcSTUNServer e TsgcTURNServer.

TsgcUDPServer

Listener UDP ad alte prestazioni — bind a una porta, ricezione di datagrammi da qualunque peer, risposta a endpoint specifici, tutto attraverso un solo socket associato.

Classe componente

TsgcUDPServer

Protocollo

UDP (RFC 768)

Piattaforme

Windows, macOS, Linux, iOS, Android

Edizione

Professional / Enterprise

Trascina, ascolta, rispondi

Imposta Port, Active := True, poi gestisci i datagrammi in arrivo in OnUDPRead e rispondi tramite Socket.WriteData — un solo socket, qualunque numero di peer remoti.

uses
  sgcP2P, sgcUDP_Classes, sgcSocket_Classes;

// TFormUDPServer contiene FServer: TsgcUDPServer e l'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
  // rispondi al peer da cui è arrivato il datagramma
  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)
{
  // rispondi al peer da cui è arrivato il datagramma
  Socket->WriteData(TBytes(Bytes));
}

Cosa c'è all'interno

Un listener UDP che consegna ogni datagramma al tuo handler insieme alla TsgcUDPSocket su cui è arrivato, che è anche il percorso di risposta.

Una porta, molti peer

Un solo socket associato gestisce datagrammi da qualunque numero di endpoint remoti. Ogni OnUDPRead si attiva con una TsgcUDPSocket il cui IP e il cui Port identificano il mittente.

Percorso di risposta

Socket.WriteData invia un datagramma al peer di origine usando lo stesso socket, e il server offre anche WriteData(ip, port, ...) per qualunque altro endpoint.

WatchDog

WatchDog riavvia il listener quando smette di rispondere, e OnBeforeWatchDog ti dà la possibilità di annullare il riavvio. OnStartup e OnShutdown delimitano ogni bind.

IPv4 / IPv6 e binding multipli

Imposta IPVersion per la famiglia, oppure aggiungi una voce per indirizzo a Bindings con AddBinding, RemoveBinding e GetBinding quando il server deve ascoltare su più indirizzi.

Usato sotto TsgcSTUNServer / TsgcTURNServer

I server STUN e TURN (implementazioni complete RFC 8489 / 8656) si basano su questo componente — puoi fare lo stesso per qualunque protocollo UDP personalizzato.

DTLS

Imposta DTLS := True e compila DTLSOptions per far viaggiare i datagrammi dentro una sessione DTLS, con OnDTLSVerifyPeer che decide quali certificati dei peer accetti.

Specifiche e riferimenti

Fonti autorevoli per il protocollo implementato da questo componente.

Documentazione e demo

Collegamenti diretti al riferimento del componente, al progetto demo pronto all'uso e al download della versione di prova.

Guida online — TsgcUDPServer Riferimento completo di proprietà, metodi ed eventi di questo componente.
Progetto demo — Demos\35.P2P\01.UDP_Server_Client Progetto di esempio pronto all'uso. Incluso nel pacchetto sgcWebSockets — scarica la versione di prova qui sotto.
Documento tecnico (PDF) Funzionalità, guida rapida, esempi di codice per Delphi e C++ Builder e riferimenti alle fonti primarie — solo per questo componente.
Manuale utente (PDF) Manuale completo che copre ogni componente della libreria.
La scelta più conveniente: All-AccessTutti i prodotti eSeGeCe, con Supporto Premium incluso, a partire da €1,059/anno.
Vedi i prezzi All-Access

Pronto a eseguire un server UDP?

Scarica la versione di prova gratuita e ascolta datagrammi UDP da Delphi.