Delphi STUN İstemcisi

Türü belirli bir STUN (RFC 8489) istemcisiyle NAT arkasındaki yansımalı uç noktanızı keşfedin. ICE aday toplama ve WebRTC için başlangıç adımı olarak kullanılır.

TsgcSTUNClient

STUN istemcisi — Binding istekleri, XOR-MAPPED-ADDRESS çıkarımı, MESSAGE-INTEGRITY / FINGERPRINT desteği, RFC 8489 uyarınca yeniden iletim zamanlayıcısı.

Bileşen sınıfı

TsgcSTUNClient

Protokol

STUN (RFC 8489)

Platformlar

Windows, macOS, Linux, iOS, Android

Sürüm

Standard / Professional / Enterprise

Bileşeni bırakın, yansımalı adresi isteyin

STUN sunucusu host ve port değerlerini ayarlayın, SendRequest çağırın, ardından OnSTUNResponseSuccess içinde aBinding.RemoteIP ve aBinding.RemotePort değerlerini okuyun.

uses
  sgcP2P, sgcP2P_STUN_Classes, sgcSocket_Classes;

// TFormSTUN, FClient: TsgcSTUNClient ve FLog: TStringList tutar

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 ve RemotePort, sunucunun gördüğü XOR-MAPPED-ADDRESS değerini taşır
  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();

İçinde neler var

ICE tarafından kullanılan message-integrity ve fingerprint uzantılarına sahip, türü belirli bir RFC 8489 STUN istemcisi.

Binding isteği / yanıtı

SendRequest, STUN 0x0001 Binding mesajını Host / Port hedefine gönderir; SendBindingRequest(host, port) ise aynı soket üzerinden başka bir sunucuyu sorgular. Yanıt, XOR-MAPPED-ADDRESS önceden ayrıştırılmış olarak OnSTUNResponseSuccess içinde ulaşır.

Kimlik doğrulama (uzun vadeli / kısa vadeli)

STUNOptions.Authentication.Credentials değerini stauShortTermCredential veya stauLongTermCredential olarak ayarlayın, Username ve Password değerlerini doldurun; bileşen MESSAGE-INTEGRITY değerini hesaplar. Realm ve nonce, 401 challenge yanıtından gelir.

Yeniden iletim

UDP üzerinden STUN, uygulama katmanında yeniden iletim gerektirir. RetransmissionOptions.RTO ve MaxRetries, RFC 8489 §6.2.1 geri çekilmesini yönetir; zamanlamayı kendiniz yönettiğinizde Enabled bunu kapatır.

IPv4 / IPv6

XOR-MAPPED-ADDRESS her iki aileden de dönebilir. Bileşen ikisini de çözer ve metin biçimini aBinding.RemoteIP içinde size verir, aile bilgisi ise aBinding.IPVersion içindedir.

ICE host toplayıcısı olarak kullanın

Sunucu-yansımalı ICE adaylarını toplamak için birden fazla TsgcSTUNClient örneğini birkaç STUN sunucusuna karşı çalıştırın — her yerel arabirim için bir tane.

Temel soket

Dahili olarak TsgcUDPClient kullanır, Transport := stunTCP ise TCP yoluna geçirir. GetLocalSocketBinding, o soketin taşıma adresini döndürür; bu adres, o soket üzerinden toplanan her adayın paylaştığı RFC 8445 tabanıdır.

Spesifikasyonlar ve referanslar

Bu bileşenin uyguladığı protokol için yetkili kaynaklar.

Belgeler ve Demolar

Bileşen referansına doğrudan bağlanın, çalışmaya hazır demo projesini alın ve denemeyi indirin.

Çevrimiçi Yardım — TsgcSTUNClient Bu bileşen için tam özellik, metot ve olay referansı.
Demo Projesi — Demos\35.P2P\02.STUN Çalışmaya hazır örnek proje. sgcWebSockets paketinin içinde gelir — denemeyi aşağıdan indirin.
Teknik Belge (PDF) Özellikler, hızlı başlangıç, Delphi ve C++ Builder için kod örnekleri ve birincil kaynak referansları — yalnızca bu bileşen.
Kullanıcı Kılavuzu (PDF) Kütüphanedeki her bileşeni kapsayan kapsamlı kılavuz.
En avantajlı seçenek: All-AccessTüm eSeGeCe ürünleri, Premium Destek dahil, yılda €1,059'dan itibaren.
All-Access fiyatlarına bakın

NAT Eşlemelerini Keşfetmeye Hazır mısınız?

Ücretsiz denemeyi indirin ve Delphi uygulamalarınıza STUN tabanlı NAT keşfi ekleyin.