TURN-client

Praat met een TURN-server vanuit Delphi/C++Builder. Wijs gerelayde transportadressen toe, beheer permissions en channels en wissel data uit met peers achter symmetric NAT — volgens RFC 8656.

TsgcTURNClient

TURN-client — Allocate, CreatePermission, ChannelBind, Send / Indication / Data, Refresh, allemaal ondertekend met long-term credentials volgens RFC 8656.

Componentklasse

TsgcTURNClient

Protocol

TURN (RFC 8656)

Platforms

Windows, macOS, Linux, iOS, Android

Editie

Professional / Enterprise

Allocate, permission, send

Stel TURN-server / gebruikersnaam / wachtwoord in, roep Allocate aan en gebruik daarna CreatePermission per peer en Send / SendIndication om data te relayen.

uses
  sgcP2P;

var
  TURN: TsgcTURNClient;
begin
  TURN := TsgcTURNClient.Create(nil);
  TURN.Host := 'turn.example.com';
  TURN.Port := 3478;
  TURN.Authentication.UserName := 'alice';
  TURN.Authentication.Password := 'secret';

  TURN.OnTURNAllocated := procedure(Sender: TObject;
    const aRelayedAddress, aRelayedPort: string)
  begin
    Memo1.Lines.Add('relay: ' + aRelayedAddress + ':' + aRelayedPort);
    TURN.CreatePermission('192.0.2.1');
    TURN.SendIndication('192.0.2.1', 5000, 'hello via TURN');
  end;

  TURN.Allocate;
end;
// uses: sgcP2P
TsgcTURNClient *TURN = new TsgcTURNClient(this);
TURN->Host = "turn.example.com";
TURN->Port = 3478;
TURN->Authentication->UserName = "alice";
TURN->Authentication->Password = "secret";
TURN->Allocate();

Wat zit erin

Een getypeerde RFC 8656 TURN-client — de relay-laag voor WebRTC wanneer NAT-traversal met alleen STUN faalt.

Allocate / Refresh

Allocate stuurt een Allocate-request met REQUESTED-TRANSPORT (UDP, TCP) en krijgt een gerelayd transportadres. Refresh verlengt de levensduur; Free dealloceert expliciet.

CreatePermission

CreatePermission(peerIp) registreert een peer waarvan de relay datagrammen mag doorsturen. Permissions verlopen automatisch na 5 minuten — ververs ze indien nodig.

ChannelBind

ChannelBind(channelNumber, peerEndpoint) omzeilt de 36 byte Send/Data-overhead. Het component codeert automatisch de 4 byte ChannelData-header.

Long-term credentials

Authentication.UserName / Password vullen MESSAGE-INTEGRITY met het realm en nonce uit de 401 challenge.

TURN over TCP/TLS

Zet de Transport van de onderliggende client op TCP of TLS voor omgevingen die UDP blokkeren — transportkeuzes uit RFC 6062 / 6056 worden ondersteund.

WebRTC-ready

TsgcRTCPeerConnection gebruikt TsgcTURNClient als een van zijn IceServers — de Allocate-, CreatePermission- en ChannelBind-dans verloopt transparant.

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 — TsgcTURNClient Volledige referentie van eigenschappen, methoden en gebeurtenissen voor dit component.
Demoproject — Demos\35.P2P\03.TURN 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.

Klaar om TURN vanuit Delphi te gebruiken?

Download de gratis proefversie en voeg op TURN gebaseerde relaying toe aan je Delphi-toepassingen.