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.
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.
STUN istemcisi — Binding istekleri, XOR-MAPPED-ADDRESS çıkarımı, MESSAGE-INTEGRITY / FINGERPRINT desteği, RFC 8489 uyarınca yeniden iletim zamanlayıcısı.
TsgcSTUNClient
Windows, macOS, Linux, iOS, Android
Standard / Professional / Enterprise
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();
ICE tarafından kullanılan message-integrity ve fingerprint uzantılarına sahip, türü belirli bir RFC 8489 STUN istemcisi.
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.
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.
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.
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.
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.
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.
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ı. | Aç | |
| Demo Projesi — Demos\35.P2P\02.STUN Çalışmaya hazır örnek proje. sgcWebSockets paketinin içinde gelir — denemeyi aşağıdan indirin. | Aç | |
| 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. | Aç | |
| Kullanıcı Kılavuzu (PDF) Kütüphanedeki her bileşeni kapsayan kapsamlı kılavuz. | Aç |