ICE Client

Uruchom pełny algorytm ICE w Delphi/C++Builder — zbierz kandydatów hosta, serwera-refleksywnych i przekaźnikowych, wykonaj sprawdzenia łączności STUN, nominuj najlepszą parę zgodnie z RFC 8445.

TsgcICEClient

Implementuje maszynę stanów ICE RFC 8445 — zbieranie kandydatów, priorytetyzacja, generowanie par, sprawdzenia łączności (BindingRequest z USE-CANDIDATE), nominacja i świeżość zgody.

Klasa komponentu

TsgcICEClient

Protokół

ICE (RFC 8445)

Platformy

Windows, macOS, Linux, iOS, Android

Edycja

Professional / Enterprise

Skonfiguruj serwery, zbierz, wymień, sprawdź

Skonfiguruj serwery ICE STUN/TURN, wywołaj GatherCandidates, wymień listę kandydatów z peerem (poza pasmem), następnie StartChecks, aby nominować działającą parę.

uses
  sgcP2P;

var
  ICE: TsgcICEClient;
begin
  ICE := TsgcICEClient.Create(nil);
  ICE.IceServers.Add('stun:stun.l.google.com:19302');
  ICE.IceServers.Add('turn:turn.example.com', 'alice', 'secret');

  ICE.OnICELocalCandidate := procedure(Sender: TObject;
    const aCandidate: string)
  begin
    SignalToPeer(aCandidate); // out-of-band SDP / WebSocket
  end;

  ICE.OnICEConnectionStateChanged := procedure(Sender: TObject;
    const aState: TsgcICEConnectionState)
  begin
    Memo1.Lines.Add('ICE: ' + GetEnumName(TypeInfo(TsgcICEConnectionState), Ord(aState)));
  end;

  ICE.GatherCandidates;
end;
// uses: sgcP2P
TsgcICEClient *ICE = new TsgcICEClient(this);
ICE->IceServers->Add("stun:stun.l.google.com:19302");
ICE->GatherCandidates();

Co jest w środku

Wielokrotnego użytku silnik ICE działający poniżej TsgcRTCPeerConnection — lub samodzielnie dla P2P nie-WebRTC.

Zbieranie kandydatów

Wylicza kandydatów hosta z każdego lokalnego interfejsu, kandydatów serwera-refleksywnego z każdego serwera STUN, kandydatów przekaźnikowych z każdego serwera TURN — wszystko równolegle.

Generowanie i priorytetyzacja par

Oblicza priorytety par kandydatów zgodnie z RFC 8445 §6.1.2 i porządkuje listę sprawdzeń. Zamrożone pary odmrażają się w miarę postępów ich podstawy.

Sprawdzenia łączności

Wysyła STUN BindingRequests z atrybutami PRIORITY, ICE-CONTROLLING / ICE-CONTROLLED, USE-CANDIDATE zgodnie ze standardem. Wyzwolone sprawdzenia uruchamiają się na bodziec przychodzący.

Nominacja

Gdy para zakończy sukcesem i agent kontrolujący oznaczy USE-CANDIDATE, komponent wyzwala OnICEConnectionStateChanged z iceConnected, następnie iceCompleted dla ostatecznej wybranej pary.

Świeżość zgody

Implementuje sondy świeżości zgody RFC 7675 — okresowe STUN BindingRequests na nominowanej parze, z OnICEConnectionStateChanged(iceFailed) gdy zgoda jest utracona.

Niezależny od sygnalizacji

Komponent nie zakłada konkretnego kanału sygnalizacyjnego — marshalujesz lokalnych kandydatów przez swój sygnalizację WebSocket / SIP / HTTP i wczytujesz zdalnych kandydatów z powrotem.

Specyfikacje i odniesienia

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

Dokumentacja i dema

Przejdź bezpośrednio do referencji komponentu, pobierz gotowy do uruchomienia projekt demonstracyjny i pobierz wersję próbną.

Pomoc online — TsgcICEClient Pełna dokumentacja właściwości, metod i zdarzeń tego komponentu.
Projekt demonstracyjny — Demos\35.P2P\04.ICE Gotowy do uruchomienia projekt przykładowy. Dostarczany w pakiecie sgcWebSockets — pobierz wersję próbną poniżej.
Dokument techniczny (PDF) Funkcje, szybki start, przykłady kodu dla Delphi i C++ Builder oraz odniesienia do źródeł — tylko ten komponent.
Podręcznik użytkownika (PDF) Kompleksowy podręcznik obejmujący każdy komponent biblioteki.

Gotowy do uruchomienia ICE w Delphi?

Pobierz bezpłatną wersję próbną i dodaj pełne zbieranie kandydatów ICE oraz sprawdzenia łączności do swoich aplikacji Delphi.