STUN Client

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.

TsgcSTUNClient

Klient STUN — żądania Binding, ekstrakcja XOR-MAPPED-ADDRESS, obsługa MESSAGE-INTEGRITY / FINGERPRINT, timer retransmisji według RFC 8489.

Klasa komponentu

TsgcSTUNClient

Protokół

STUN (RFC 8489)

Platformy

Windows, macOS, Linux, iOS, Android

Edycja

Standard / Professional / Enterprise

Wrzuć komponent i zapytaj o adres reflexive

Ustaw host/port serwera STUN, wywołaj SendBindingRequest, a następnie odczytaj MappedAddress / MappedPort z OnSTUNMappedAddress.

uses
  sgcP2P;

var
  STUN: TsgcSTUNClient;
begin
  STUN := TsgcSTUNClient.Create(nil);
  STUN.Host := 'stun.l.google.com';
  STUN.Port := 19302;

  STUN.OnSTUNMappedAddress := procedure(Sender: TObject;
    const aMappedAddress, aMappedPort: string)
  begin
    Memo1.Lines.Add('public: ' + aMappedAddress + ':' + aMappedPort);
  end;

  STUN.SendBindingRequest;
end;
// uses: sgcP2P
TsgcSTUNClient *STUN = new TsgcSTUNClient(this);
STUN->Host = "stun.l.google.com";
STUN->Port = 19302;
STUN->SendBindingRequest();

Co jest w środku

Typowany klient STUN RFC 8489 z rozszerzeniami message-integrity i fingerprint używanymi przez ICE.

Żądanie/odpowiedź Binding

SendBindingRequest wysyła komunikat STUN 0x0001; odpowiedź pojawia się w OnSTUNMappedAddress z przeanalizowanym atrybutem XOR-MAPPED-ADDRESS.

Uwierzytelnianie (długo-/krótkoterminowe)

Ustaw Authentication.UserName / Password, a komponent oblicza MESSAGE-INTEGRITY (HMAC-SHA1 / HMAC-SHA256). Realm i nonce są wyodrębniane z odpowiedzi challenge 401.

Retransmisja

STUN przez UDP wymaga retransmisji na poziomie aplikacji. Komponent implementuje standardowy back-off (RTO / Rc / Rm) według RFC 8489 §6.2.1.

IPv4 / IPv6

XOR-MAPPED-ADDRESS jest zwracany w dowolnej z rodzin — komponent dekoduje obie i przechowuje kanoniczną formę tekstową w MappedAddress.

Jako gatherer kandydatów ICE

Uruchom kilka instancji TsgcSTUNClient przeciw wielu serwerom STUN, aby zebrać server-reflexive kandydatów ICE — jednego na każdy interfejs lokalny.

Podstawowy socket

Używa wewnętrznie TsgcUDPClient; lokalne powiązanie portu jest konfigurowalne, dzięki czemu STUN, ICE i ścieżka danych mogą współdzielić endpoint w razie potrzeby.

Specyfikacje i odniesienia

Autorytatywne źródła dla protokołu implementowanego przez ten komponent.

Dokumentacja i dema

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.
Projekt demo — Demos\35.P2P\02.STUN Gotowy do uruchomienia projekt przykładowy. Dołączony do pakietu sgcWebSockets — pobierz wersję próbną poniżej.
Dokument techniczny (PDF) Funkcje, szybki start, przykłady kodu dla Delphi i C++ Builder oraz odwołania do źródeł — tylko dla tego komponentu.
Podręcznik użytkownika (PDF) Kompleksowy podręcznik obejmujący każdy komponent biblioteki.

Gotowy do odkrywania mapowań NAT?

Pobierz bezpłatną wersję próbną i dodaj odkrywanie NAT oparte na STUN do swoich aplikacji Delphi.