UDP-server voor Delphi

Luister naar UDP-datagrammen op een poort en stuur elk datagram door naar je toepassing. Dezelfde engine die TsgcSTUNServer en TsgcTURNServer aandrijft.

TsgcUDPServer

High-performance UDP-listener — bind aan een poort, ontvang datagrammen van elke peer en beantwoord specifieke endpoints, allemaal via één gebonden socket.

Componentklasse

TsgcUDPServer

Protocol

UDP (RFC 768)

Platforms

Windows, macOS, Linux, iOS, Android

Editie

Professional / Enterprise

Plaatsen, luisteren, antwoorden

Stel Port in, Active := True en handel inkomende datagrammen af in OnUDPRead. Antwoord via Socket.WriteData — één socket, willekeurig veel remote peers.

uses
  sgcP2P, sgcUDP_Classes, sgcSocket_Classes;

// TFormUDPServer bevat FServer: TsgcUDPServer en de 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
  // stuur terug naar de peer waar het datagram vandaan kwam
  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)
{
  // stuur terug naar de peer waar het datagram vandaan kwam
  Socket->WriteData(TBytes(Bytes));
}

Wat zit erin

Een UDP-listener die elk datagram aan je handler doorgeeft samen met de TsgcUDPSocket waarop het binnenkwam, en dat is meteen het antwoordpad.

Eén poort, veel peers

Één gebonden socket handelt datagrammen af van willekeurig veel remote endpoints. Elke OnUDPRead vuurt met een TsgcUDPSocket waarvan IP en Port de afzender identificeren.

Antwoordpad

Socket.WriteData stuurt een datagram terug naar de oorspronkelijke peer via dezelfde socket, en de server biedt daarnaast WriteData(ip, port, ...) voor elk ander endpoint.

WatchDog

WatchDog herstart de listener wanneer die niet meer antwoordt, en OnBeforeWatchDog geeft je de kans om die herstart tegen te houden. OnStartup en OnShutdown omsluiten elke bind.

IPv4 / IPv6 en meerdere bindings

Stel IPVersion in voor de familie, of voeg per adres een item toe aan Bindings met AddBinding, RemoveBinding en GetBinding wanneer de server op meerdere adressen moet luisteren.

Gebruikt onder TsgcSTUNServer / TsgcTURNServer

De STUN- en TURN-servers (volledige RFC 8489 / 8656-implementaties) bouwen op dit component — jij kunt hetzelfde doen voor elk custom UDP-protocol.

DTLS

Zet DTLS := True en vul DTLSOptions in om de datagrammen binnen een DTLS-sessie te laten lopen, waarbij OnDTLSVerifyPeer bepaalt welke peer-certificaten je accepteert.

Specificaties & referenties

Autoritatieve bronnen voor het protocol dat dit component implementeert.

Documentatie & demo's

Direct linken naar de componentreferentie, het kant-en-klare demoproject pakken en de proefversie downloaden.

Online help — TsgcUDPServer Volledige referentie van eigenschappen, methoden en gebeurtenissen voor dit component.
Demoproject — Demos\35.P2P\01.UDP_Server_Client Kant-en-klaar voorbeeldproject. Zit in het sgcWebSockets-pakket — download hieronder de proefversie.
Technisch document (PDF) Functies, snelstart, codevoorbeelden voor Delphi & C++ Builder en primaire bronverwijzingen — alleen dit component.
Gebruikershandleiding (PDF) Uitgebreide handleiding voor elk component in de bibliotheek.
De beste deal: All-AccessElk eSeGeCe-product, inclusief Premium-ondersteuning, vanaf €1,059 per jaar.
Bekijk de All-Access-prijzen

Klaar om een UDP-server te draaien?

Download de gratis proefversie en luister naar UDP-datagrammen vanuit Delphi.