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.
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.
Cliente TURN — Allocate, CreatePermission, ChannelBind, Send / Indication / Data, Refresh, tudo assinado com credenciais de longo prazo conforme a RFC 8656.
TsgcTURNClient
Windows, macOS, Linux, iOS, Android
Professional / Enterprise
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();
Um cliente TURN RFC 8656 tipado — a camada de relay para WebRTC quando a travessia de NAT apenas com STUN falha.
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(peerIp) registra um peer cujos datagramas o relay vai encaminhar. As permissões expiram automaticamente após 5 minutos — renove conforme necessário.
ChannelBind(channelNumber, peerEndpoint) evita o overhead de 36 bytes do Send/Data. O componente codifica o cabeçalho ChannelData de 4 bytes automaticamente.
Authentication.UserName / Password alimentam MESSAGE-INTEGRITY usando o realm e o nonce extraídos do desafio 401.
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.
TsgcRTCPeerConnection consome TsgcTURNClient como um de seus IceServers — a dança Allocate, CreatePermission e ChannelBind acontece de forma transparente.
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. | Abrir | |
| Projeto demo — Demos\35.P2P\03.TURN Exemplo pronto para executar. Acompanha o pacote sgcWebSockets — baixe a versão de avaliação abaixo. | Abrir | |
| 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. | Abrir | |
| Manual do usuário (PDF) Manual completo cobrindo todos os componentes da biblioteca. | Abrir |