Client TURN

Dialogue avec un serveur TURN depuis Delphi/C++Builder. Alloue des adresses de transport relayées, gère les permissions et canaux, puis échange des données avec des pairs derrière un NAT symétrique — selon la RFC 8656.

TsgcTURNClient

Client TURN — Allocate, CreatePermission, ChannelBind, Send / Indication / Data, Refresh, tous signés avec des credentials longue durée selon la RFC 8656.

Classe du composant

TsgcTURNClient

Protocole

TURN (RFC 8656)

Plateformes

Windows, macOS, Linux, iOS, Android

Édition

Professional / Enterprise

Alloue, autorise, envoie

Configure le serveur TURN, le nom d'utilisateur et le mot de passe, appelle Allocate, puis CreatePermission pour chaque pair et Send / SendIndication pour relayer les données.

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

Sous le capot

Un client TURN typé conforme à la RFC 8656 — la couche de relais pour WebRTC quand la traversée NAT par STUN seul échoue.

Allocate / Refresh

Allocate envoie une requête Allocate avec REQUESTED-TRANSPORT (UDP, TCP) et obtient une adresse de transport relayée. Refresh prolonge la durée de vie ; Free désalloue explicitement.

CreatePermission

CreatePermission(peerIp) enregistre un pair dont les datagrammes seront relayés. Les permissions expirent automatiquement au bout de 5 minutes — rafraîchis-les si besoin.

ChannelBind

ChannelBind(channelNumber, peerEndpoint) contourne le surcoût de 36 octets de Send/Data. Le composant encode automatiquement l'en-tête ChannelData de 4 octets.

Credentials longue durée

Authentication.UserName / Password renseignent MESSAGE-INTEGRITY à partir du realm et du nonce extraits du défi 401.

TURN sur TCP/TLS

Configure le Transport du client sous-jacent en TCP ou TLS pour les environnements qui bloquent UDP — les choix de transport des RFC 6062 / 6056 sont pris en charge.

Prêt pour WebRTC

TsgcRTCPeerConnection consomme TsgcTURNClient comme l'un de ses IceServers — le ballet Allocate, CreatePermission et ChannelBind se déroule de façon transparente.

Spécifications et références

Sources de référence pour le protocole implémenté par ce composant.

Documentation et démos

Lien direct vers la référence du composant, projet de démo prêt à l'emploi et téléchargement de l'essai.

Aide en ligne — TsgcTURNClient Référence complète des propriétés, méthodes et événements de ce composant.
Projet de démo — Demos\35.P2P\03.TURN Projet d'exemple prêt à l'emploi. Livré dans le package sgcWebSockets — télécharge l'essai ci-dessous.
Document technique (PDF) Fonctionnalités, démarrage rapide, exemples de code Delphi et C++ Builder et références primaires — ce composant uniquement.
Manuel utilisateur (PDF) Manuel complet couvrant tous les composants de la bibliothèque.

Prêt à utiliser TURN depuis Delphi ?

Télécharge l'essai gratuit et ajoute le relais basé sur TURN à tes applications Delphi.