UDP-client voor Delphi

Verstuur en ontvang UDP-datagrammen vanuit Delphi/C++Builder. IPv4 en IPv6, een optionele DTLS-sessie en een SOCKS5-pad, en het transport waarop de hele STUN-, TURN-, ICE- en WebRTC-stack is gebouwd.

TsgcUDPClient

High-performance UDP-datagramclient — de basis onder STUN, TURN, ICE, RTCPeerConnection en elk custom UDP-protocol dat je schrijft.

Componentklasse

TsgcUDPClient

Protocol

UDP (RFC 768)

Platforms

Windows, macOS, Linux, iOS, Android

Editie

Core / Standard / Professional / Enterprise

Plaats het component, verstuur pakketten

Stel Host / Port in, Active := True en roep daarna WriteData aan met de tekst of de bytes die je wilt versturen. Inkomende datagrammen komen binnen via OnUDPRead.

uses
  sgcP2P, sgcUDP_Classes, sgcSocket_Classes;

// TFormUDP bevat FClient: TsgcUDPClient en FIncoming: TStringList

procedure TFormUDP.CreateClient;
begin
  FClient := TsgcUDPClient.Create(nil);
  FClient.Host := '127.0.0.1';
  FClient.Port := 4000;

  FClient.OnUDPRead := OnUDPRead;

  FClient.Active := True;
  FClient.WriteData('hello over UDP');
end;

procedure TFormUDP.OnUDPRead(Sender: TObject; Socket: TsgcUDPSocket;
  Bytes: TsgcBytes);
var
  oStream: TStringStream;
begin
  // vuurt op de read thread, marshal voordat je een control aanraakt
  oStream := TStringStream.Create('');
  try
    oStream.Write(Bytes[0], Length(Bytes));
    FIncoming.Add(oStream.DataString);
  finally
    oStream.Free;
  end;
end;
// includes: sgcP2P.hpp, sgcUDP_Classes.hpp, sgcSocket_Classes.hpp
TsgcUDPClient *Client = new TsgcUDPClient(this);
Client->Host = "127.0.0.1";
Client->Port = 4000;
Client->OnUDPRead = OnUDPRead;

Client->Active = true;
Client->WriteData("hello over UDP");

void __fastcall TFormUDP::OnUDPRead(TObject *Sender,
  TsgcUDPSocket *Socket, TsgcBytes Bytes)
{
  // vuurt op de read thread, marshal voordat je een control aanraakt
}

Wat zit erin

Een dunne, voorspelbare UDP-socketlaag, gebruikt als transport voor STUN / TURN / ICE / WebRTC en elk custom datagramprotocol.

Unicast versturen/ontvangen

WriteData(text) en WriteData(bytes) zetten een datagram naar Host / Port in de wachtrij, en de overloads die een adres meekrijgen versturen er een naar elke andere bestemming. OnUDPRead levert elk inkomend pakket samen met de socket waarop het binnenkwam.

DTLS

Zet DTLS := True en vul DTLSOptions in om de datagrammen binnen een DTLS-sessie te transporteren. OnDTLSVerifyPeer geeft je het peer-certificaat door zodat jij beslist of je het accepteert.

SOCKS5-proxy

Proxy stuurt de datagrammen door een SOCKS5 UDP ASSOCIATE. Een HTTP-proxy wordt geweigerd met EsgcUDPProxyNotSupported, omdat alleen SOCKS5 een UDP-pad definieert.

De socket waarvan je leest

Elke OnUDPRead draagt een TsgcUDPSocket mee: IP en Port benoemen de afzender, LocalIP en LocalPort benoemen de lokale base die ICE later publiceert als host candidate.

IPv4 / IPv6

IPVersion wordt rechtstreeks doorgegeven aan de onderliggende socket, dus zet hem op Id_IPv6 wanneer je het IPv6-pad nodig hebt.

Gebruikt onder de P2P-stack

Elk hoger P2P-component (TsgcSTUNClient, TsgcTURNClient, TsgcICEClient, TsgcRTCPeerConnection) gebruikt deze client intern als UDP-transport.

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 — TsgcUDPClient 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 UDP vanuit Delphi te versturen?

Download de gratis proefversie en voeg UDP-datagramondersteuning toe aan je Delphi-toepassingen.