TURN Client

Habla con un servidor TURN desde Delphi/C++Builder. Asigna direcciones de transporte retransmitidas, gestiona permisos y canales, e intercambia datos con pares detrás de NAT simétrico — según RFC 8656.

TsgcTURNClient

Cliente TURN — Allocate, CreatePermission, ChannelBind, Send / Indication / Data, Refresh, todo firmado con credenciales long-term según RFC 8656.

Clase del componente

TsgcTURNClient

Protocolo

TURN (RFC 8656)

Plataformas

Windows, macOS, Linux, iOS, Android

Edición

Professional / Enterprise

Asigna, da permiso, envía

Configura servidor TURN / username / password, llama a Allocate, luego CreatePermission por cada par y Send / SendIndication para retransmitir datos.

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

Qué incluye

Un cliente TURN tipado conforme a RFC 8656 — la capa de relay para WebRTC cuando el NAT traversal solo con STUN falla.

Allocate / Refresh

Allocate envía la petición Allocate con REQUESTED-TRANSPORT (UDP, TCP) y obtiene una dirección de transporte retransmitida. Refresh amplía la duración; Free desasigna explícitamente.

CreatePermission

CreatePermission(peerIp) registra un par cuyos datagramas el relay reenviará. Los permisos caducan automáticamente tras 5 minutos — refréscalos según haga falta.

ChannelBind

ChannelBind(channelNumber, peerEndpoint) evita la sobrecarga de 36 bytes de Send/Data. El componente codifica la cabecera de 4 bytes de ChannelData automáticamente.

Credenciales long-term

Authentication.UserName / Password rellenan MESSAGE-INTEGRITY usando el realm y nonce extraídos del desafío 401.

TURN sobre TCP/TLS

Establece el Transport del cliente subyacente a TCP o TLS para entornos que bloquean UDP — se admiten las opciones de transporte RFC 6062 / 6056.

Listo para WebRTC

TsgcRTCPeerConnection consume TsgcTURNClient como uno de sus IceServers — el flujo Allocate, CreatePermission y ChannelBind ocurre de forma transparente.

Especificaciones y referencias

Fuentes autorizadas del protocolo que implementa este componente.

Documentación y demos

Accede a la referencia del componente, descarga el proyecto demo listo para ejecutar y la versión de prueba.

Ayuda en línea — TsgcTURNClient Referencia completa de propiedades, métodos y eventos de este componente.
Proyecto demo — Demos\35.P2P\03.TURN Proyecto de ejemplo listo para ejecutar. Se incluye dentro del paquete sgcWebSockets — descarga la prueba abajo.
Documento técnico (PDF) Características, inicio rápido, ejemplos de código para Delphi y C++ Builder y referencias a fuentes primarias — solo este componente.
Manual de usuario (PDF) Manual completo que cubre cada componente de la biblioteca.

¿Listo para usar TURN desde Delphi?

Descarga la prueba gratuita y añade retransmisión basada en TURN a tus aplicaciones Delphi.