Klient TURN dla Delphi

Komunikuj się z serwerem TURN z Delphi/C++Builder. Alokuj przekazywane adresy transportowe, zarządzaj uprawnieniami i kanałami, a następnie wymieniaj dane z peerami za symetrycznym NAT — zgodnie z RFC 8656.

TsgcTURNClient

Klient TURN — Allocate, CreatePermission, ChannelBind, Send / Indication / Data, Refresh, wszystko podpisane poświadczeniami long-term zgodnie z RFC 8656.

Klasa komponentu

TsgcTURNClient

Protokół

TURN (RFC 8656)

Platformy

Windows, macOS, Linux, iOS, Android

Edycja

Enterprise

Allocate, permission, send

Ustaw serwer TURN, umieść poświadczenia w TURNOptions.Authentication, wywołaj Allocate, a następnie CreatePermission dla każdego peera i SendIndication, aby przekazywać dane.

uses
  sgcP2P, sgcP2P_STUN_Classes, sgcP2P_STUN_Types, sgcP2P_TURN_Classes,
  sgcSocket_Classes;

// TFormTURN zawiera FClient: TsgcTURNClient oraz FLog: TStringList

procedure TFormTURN.StartAllocation;
begin
  FClient := TsgcTURNClient.Create(nil);
  FClient.Host := 'turn.example.com';
  FClient.Port := 3478;
  FClient.TURNOptions.Authentication.Credentials := stauLongTermCredential;
  FClient.TURNOptions.Authentication.Username := 'alice';
  FClient.TURNOptions.Authentication.Password := 'secret';

  FClient.OnTURNAllocate := OnTURNAllocate;

  FClient.Allocate;
end;

procedure TFormTURN.OnTURNAllocate(Sender: TObject;
  const aSocket: TsgcSocketConnection;
  const aMessage: TsgcSTUN_Message;
  const aAllocation: TsgcTURN_ResponseAllocation);
begin
  FLog.Add('relay: ' + aAllocation.RelayedIP + ':' +
    IntToStr(aAllocation.RelayedPort));

  // relay przekazuje dane tylko do peera z nadanym uprawnieniem
  FClient.CreatePermission('192.0.2.1');
  FClient.SendIndication('192.0.2.1', 5000, 'hello via TURN');
end;
// includes: sgcP2P.hpp, sgcP2P_STUN_Types.hpp, sgcP2P_TURN_Classes.hpp
TsgcTURNClient *Client = new TsgcTURNClient(this);
Client->Host = "turn.example.com";
Client->Port = 3478;
Client->TURNOptions->Authentication->Credentials = stauLongTermCredential;
Client->TURNOptions->Authentication->Username = "alice";
Client->TURNOptions->Authentication->Password = "secret";
Client->OnTURNAllocate = OnTURNAllocate;
Client->Allocate();

Co jest w środku

Typowany klient TURN zgodny z RFC 8656 — warstwa przekazywania dla WebRTC, gdy traversal NAT oparty wyłącznie na STUN zawodzi.

Allocate / Refresh

Allocate wysyła żądanie Allocate z REQUESTED-TRANSPORT i uzyskuje przekazywany adres transportowy, który dociera w OnTURNAllocate jako aAllocation.RelayedIP i RelayedPort. Refresh(lifetime) przedłuża alokację, a Refresh(0) ją zwalnia.

CreatePermission

CreatePermission(peerIp) rejestruje peera, którego datagramy będą przekazywane przez relay. Uprawnienia wygasają automatycznie po 5 minutach — odświeżaj je w razie potrzeby.

ChannelBind

ChannelBind(peerIp, peerPort) omija 36-bajtowy narzut Send/Data. Komponent wybiera numer kanału, koduje 4-bajtowy nagłówek ChannelData i raportuje powiązanie w OnTURNChannelBind.

Poświadczenia long-term

TURNOptions.Authentication.Username i Password wypełniają MESSAGE-INTEGRITY, korzystając z realm i nonce pobranych z odpowiedzi challenge 401. Credentials wybiera poświadczenia short term albo long term.

TURN przez TCP

Transport := stunTCP przenosi kanał sterujący na TCP w sieciach blokujących UDP, czyli na ścieżkę z RFC 6062. TURNOptions.AutoRefresh samodzielnie utrzymuje potem przy życiu alokację, uprawnienia i kanały.

Gotowy do WebRTC

TsgcICEClient steruje nim poprzez właściwość TURNClient, a TsgcRTCPeerConnection alokuje na podstawie wpisów turn: z RTCOptions.ICEServers. Sekwencja Allocate, CreatePermission i ChannelBind wykonuje się za Ciebie.

Specyfikacje i odniesienia

Wiarygodne źródła protokołu, który implementuje ten komponent.

Dokumentacja i dema

Przejdź bezpośrednio do dokumentacji komponentu, pobierz gotowy do uruchomienia projekt demonstracyjny i pobierz wersję próbną.

Pomoc online — TsgcTURNClient Pełna dokumentacja właściwości, metod i zdarzeń tego komponentu.
Projekt demonstracyjny — Demos\35.P2P\03.TURN Gotowy do uruchomienia projekt przykładowy. Dostarczany w pakiecie sgcWebSockets — pobierz wersję próbną poniżej.
Dokument techniczny (PDF) Funkcje, szybki start, przykłady kodu dla Delphi i C++ Builder oraz odniesienia do źródeł — tylko ten komponent.
Podręcznik użytkownika (PDF) Kompleksowy podręcznik obejmujący każdy komponent biblioteki.
Najkorzystniejsza oferta: All-AccessWszystkie produkty eSeGeCe, ze wsparciem Premium w cenie, już od €1,059 rocznie.
Zobacz cennik All-Access

Gotowy, by korzystać z TURN w Delphi?

Pobierz bezpłatną wersję próbną i dodaj przekazywanie oparte na TURN do swoich aplikacji Delphi.