Klient STUN dla Delphi
Odkryj swój reflexive endpoint za NAT za pomocą typowanego klienta STUN (RFC 8489). Używany jako krok startowy przy zbieraniu kandydatów ICE i WebRTC.
Odkryj swój reflexive endpoint za NAT za pomocą typowanego klienta STUN (RFC 8489). Używany jako krok startowy przy zbieraniu kandydatów ICE i WebRTC.
Klient STUN — żądania Binding, ekstrakcja XOR-MAPPED-ADDRESS, obsługa MESSAGE-INTEGRITY / FINGERPRINT, timer retransmisji według RFC 8489.
TsgcSTUNClient
Windows, macOS, Linux, iOS, Android
Standard / Professional / Enterprise
Ustaw host i port serwera STUN, wywołaj SendRequest, a następnie odczytaj aBinding.RemoteIP i aBinding.RemotePort w OnSTUNResponseSuccess.
uses
sgcP2P, sgcP2P_STUN_Classes, sgcSocket_Classes;
// TFormSTUN zawiera FClient: TsgcSTUNClient oraz FLog: TStringList
procedure TFormSTUN.Discover;
begin
FClient := TsgcSTUNClient.Create(nil);
FClient.Host := 'stun.l.google.com';
FClient.Port := 19302;
FClient.OnSTUNResponseSuccess := OnSTUNResponseSuccess;
FClient.SendRequest;
end;
procedure TFormSTUN.OnSTUNResponseSuccess(Sender: TObject;
const aSocket: TsgcSocketConnection;
const aMessage: TsgcSTUN_Message;
const aBinding: TsgcSTUN_ResponseBinding);
begin
// RemoteIP i RemotePort zawierają XOR-MAPPED-ADDRESS widziany przez serwer
FLog.Add('public: ' + aBinding.RemoteIP + ':' +
IntToStr(aBinding.RemotePort));
end;
// includes: sgcP2P.hpp, sgcP2P_STUN_Classes.hpp
TsgcSTUNClient *Client = new TsgcSTUNClient(this);
Client->Host = "stun.l.google.com";
Client->Port = 19302;
Client->OnSTUNResponseSuccess = OnSTUNResponseSuccess;
Client->SendRequest();
Typowany klient STUN RFC 8489 z rozszerzeniami message-integrity i fingerprint używanymi przez ICE.
SendRequest wysyła komunikat Binding STUN 0x0001 do Host / Port, a SendBindingRequest(host, port) odpytuje inny serwer przez to samo gniazdo. Odpowiedź pojawia się w OnSTUNResponseSuccess z już przeanalizowanym XOR-MAPPED-ADDRESS.
Ustaw STUNOptions.Authentication.Credentials na stauShortTermCredential lub stauLongTermCredential, wypełnij Username i Password, a komponent obliczy MESSAGE-INTEGRITY. Realm i nonce pochodzą z odpowiedzi challenge 401.
STUN przez UDP wymaga retransmisji na poziomie aplikacji. RetransmissionOptions.RTO i MaxRetries sterują back-offem zgodnym z RFC 8489 §6.2.1, a Enabled wyłącza go, gdy sam sterujesz czasami.
XOR-MAPPED-ADDRESS wraca w dowolnej z rodzin adresów. Komponent dekoduje obie i przekazuje Ci formę tekstową w aBinding.RemoteIP, a rodzinę w aBinding.IPVersion.
Uruchom kilka instancji TsgcSTUNClient przeciw wielu serwerom STUN, aby zebrać server-reflexive kandydatów ICE — jednego na każdy interfejs lokalny.
Używa wewnętrznie TsgcUDPClient, a Transport := stunTCP przełącza na ścieżkę TCP. GetLocalSocketBinding zwraca adres transportowy tego gniazda, czyli bazę według RFC 8445, wspólną dla każdego kandydata zebranego przez to gniazdo.
Przejdź do dokumentacji komponentu, pobierz gotowy projekt demo i wersję próbną.
| Pomoc online — TsgcSTUNClient Pełna dokumentacja właściwości, metod i zdarzeń tego komponentu. | Open | |
| Projekt demo — Demos\35.P2P\02.STUN Gotowy do uruchomienia projekt przykładowy. Dołączony do pakietu sgcWebSockets — pobierz wersję próbną poniżej. | Open | |
| Dokument techniczny (PDF) Funkcje, szybki start, przykłady kodu dla Delphi i C++ Builder oraz odwołania do źródeł — tylko dla tego komponentu. | Open | |
| Podręcznik użytkownika (PDF) Kompleksowy podręcznik obejmujący każdy komponent biblioteki. | Open |