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.
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.
Klient TURN — Allocate, CreatePermission, ChannelBind, Send / Indication / Data, Refresh, wszystko podpisane poświadczeniami long-term zgodnie z RFC 8656.
TsgcTURNClient
Windows, macOS, Linux, iOS, Android
Enterprise
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();
Typowany klient TURN zgodny z RFC 8656 — warstwa przekazywania dla WebRTC, gdy traversal NAT oparty wyłącznie na STUN zawodzi.
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(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(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.
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.
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.
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.
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. | Otwórz | |
| Projekt demonstracyjny — Demos\35.P2P\03.TURN Gotowy do uruchomienia projekt przykładowy. Dostarczany w pakiecie sgcWebSockets — pobierz wersję próbną poniżej. | Otwórz | |
| Dokument techniczny (PDF) Funkcje, szybki start, przykłady kodu dla Delphi i C++ Builder oraz odniesienia do źródeł — tylko ten komponent. | Otwórz | |
| Podręcznik użytkownika (PDF) Kompleksowy podręcznik obejmujący każdy komponent biblioteki. | Otwórz |