Cliente TURN

Converse com um servidor TURN a partir do Delphi/C++Builder. Aloque endereços de transporte de relay, gerencie permissões e canais e troque dados com peers atrás de NAT simétrico — conforme a RFC 8656.

TsgcTURNClient

Cliente TURN — Allocate, CreatePermission, ChannelBind, Send / Indication / Data, Refresh, tudo assinado com credenciais de longo prazo conforme a RFC 8656.

Classe do componente

TsgcTURNClient

Protocolo

TURN (RFC 8656)

Plataformas

Windows, macOS, Linux, iOS, Android

Edição

Professional / Enterprise

Alocar, permissão, enviar

Defina o servidor TURN / username / password, chame Allocate, depois CreatePermission para cada peer e Send / SendIndication para fazer relay dos dados.

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;
// usa: sgcP2P
TsgcTURNClient *TURN = new TsgcTURNClient(this);
TURN->Host = "turn.example.com";
TURN->Port = 3478;
TURN->Authentication->UserName = "alice";
TURN->Authentication->Password = "secret";
TURN->Allocate();

O que tem por dentro

Um cliente TURN RFC 8656 tipado — a camada de relay para WebRTC quando a travessia de NAT apenas com STUN falha.

Allocate / Refresh

Allocate envia uma requisição Allocate com REQUESTED-TRANSPORT (UDP, TCP) e obtém um endereço de transporte de relay. Refresh estende o tempo de vida; Free desaloca explicitamente.

CreatePermission

CreatePermission(peerIp) registra um peer cujos datagramas o relay vai encaminhar. As permissões expiram automaticamente após 5 minutos — renove conforme necessário.

ChannelBind

ChannelBind(channelNumber, peerEndpoint) evita o overhead de 36 bytes do Send/Data. O componente codifica o cabeçalho ChannelData de 4 bytes automaticamente.

Credenciais de longo prazo

Authentication.UserName / Password alimentam MESSAGE-INTEGRITY usando o realm e o nonce extraídos do desafio 401.

TURN sobre TCP/TLS

Defina o Transport do cliente subjacente como TCP ou TLS em ambientes que bloqueiam UDP — as opções de transporte RFC 6062 / 6056 são suportadas.

Pronto para WebRTC

TsgcRTCPeerConnection consome TsgcTURNClient como um de seus IceServers — a dança Allocate, CreatePermission e ChannelBind acontece de forma transparente.

Especificações & referências

Fontes oficiais do protocolo que este componente implementa.

Documentação & Demos

Acesse a referência do componente, pegue o projeto demo pronto para executar e baixe a versão de avaliação.

Ajuda online — TsgcTURNClient Referência completa de propriedades, métodos e eventos deste componente.
Projeto demo — Demos\35.P2P\03.TURN Exemplo pronto para executar. Acompanha o pacote sgcWebSockets — baixe a versão de avaliação abaixo.
Documento técnico (PDF) Recursos, início rápido, exemplos de código para Delphi & C++ Builder e referências de fontes primárias — somente deste componente.
Manual do usuário (PDF) Manual completo cobrindo todos os componentes da biblioteca.

Pronto para usar o TURN em Delphi?

Baixe a versão de avaliação e adicione relay baseado em TURN às suas aplicações Delphi.