TURN-Client

Kommuniziere mit einem TURN-Server aus Delphi/C++Builder. Allokiere weitergeleitete Transportadressen, verwalte Permissions und Channels und tausche dann Daten mit Peers hinter symmetrischem NAT aus — gemäß RFC 8656.

TsgcTURNClient

TURN-Client — Allocate, CreatePermission, ChannelBind, Send / Indication / Data, Refresh, allesamt mit Long-Term-Credentials gemäß RFC 8656 signiert.

Komponentenklasse

TsgcTURNClient

Protokoll

TURN (RFC 8656)

Plattformen

Windows, macOS, Linux, iOS, Android

Edition

Professional / Enterprise

Allokieren, freischalten, senden

Setze TURN-Server / Benutzername / Passwort, rufe Allocate auf und dann CreatePermission für jeden Peer und Send / SendIndication, um Daten weiterzuleiten.

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();

Was steckt drin

Ein typisierter RFC-8656-TURN-Client — die Relay-Schicht für WebRTC, wenn reines STUN-NAT-Traversal fehlschlägt.

Allocate / Refresh

Allocate sendet einen Allocate-Request mit REQUESTED-TRANSPORT (UDP, TCP) und holt eine weitergeleitete Transportadresse. Refresh verlängert die Lebensdauer; Free hebt die Allokation explizit auf.

CreatePermission

CreatePermission(peerIp) registriert einen Peer, dessen Datagramme das Relay weiterleitet. Permissions laufen nach 5 Minuten automatisch ab — bei Bedarf erneuern.

ChannelBind

ChannelBind(channelNumber, peerEndpoint) umgeht den 36-Byte-Overhead von Send/Data. Die Komponente kodiert den 4-Byte-ChannelData-Header automatisch.

Long-Term-Credentials

Authentication.UserName / Password befüllen MESSAGE-INTEGRITY anhand des aus der 401-Challenge extrahierten Realm und Nonce.

TURN über TCP/TLS

Setze das Transport-Property des zugrundeliegenden Clients auf TCP oder TLS für Umgebungen, die UDP blockieren — die Transportwahl gemäß RFC 6062 / 6056 wird unterstützt.

WebRTC-tauglich

TsgcRTCPeerConnection nutzt TsgcTURNClient als einen seiner IceServers — der Ablauf von Allocate, CreatePermission und ChannelBind erfolgt transparent.

Spezifikationen & Referenzen

Maßgebliche Quellen für das Protokoll, das diese Komponente implementiert.

Dokumentation & Demos

Springe direkt zur Komponentenreferenz, hole dir das sofort lauffähige Demo-Projekt und lade die Testversion herunter.

Online-Hilfe — TsgcTURNClient Vollständige Referenz zu Eigenschaften, Methoden und Ereignissen dieser Komponente.
Demo-Projekt — Demos\35.P2P\03.TURN Sofort lauffähiges Beispielprojekt. Wird im sgcWebSockets-Paket mitgeliefert — lade unten die Testversion herunter.
Technisches Dokument (PDF) Funktionen, Schnellstart, Code-Beispiele für Delphi & C++ Builder und Primärquellen-Referenzen — nur diese Komponente.
Benutzerhandbuch (PDF) Umfassendes Handbuch, das jede Komponente der Bibliothek abdeckt.

Bereit, TURN aus Delphi zu nutzen?

Lade die kostenlose Testversion herunter und ergänze deine Delphi-Anwendungen um TURN-basiertes Relaying.