Klient ICE dla Delphi

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

Enterprise

Skonfiguruj serwery, zbierz, wymień, sprawdź

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

uses
  sgcP2P, sgcP2P_ICE_Classes;

// TFormICE zawiera FClient: TsgcICEClient oraz FLog: TStringList

procedure TFormICE.Gather;
begin
  FClient := TsgcICEClient.Create(nil);
  FClient.ICEServers.AddURL('stun:stun.l.google.com:19302');
  FClient.ICEServers.AddURL('turn:turn.example.com', 'alice', 'secret');

  FClient.OnICECandidate := OnICECandidate;
  FClient.OnICECandidatePairNominated := OnICECandidatePairNominated;

  FClient.GatherCandidates;
end;

procedure TFormICE.OnICECandidate(Sender: TObject;
  const aCandidate: TsgcICE_Candidate);
begin
  // AsString to linia kandydata, gotowa dla Twojego kanału sygnalizacyjnego
  SignalToPeer(aCandidate.AsString);
end;

// zdalni kandydaci docierają przez Twój kanał sygnalizacyjny
procedure TFormICE.AddRemoteCandidate(const aCandidate: string);
begin
  FClient.AddRTCIceCandidate(aCandidate);
  FClient.ProcessCandidates;
end;

procedure TFormICE.OnICECandidatePairNominated(Sender: TObject;
  const aCandidatePair: TsgcICE_CandidatePair);
begin
  FLog.Add('nominated: ' + aCandidatePair.Local.Address + ' -> ' +
    aCandidatePair.Remote.Address);
end;
// includes: sgcP2P.hpp, sgcP2P_ICE_Classes.hpp
TsgcICEClient *Client = new TsgcICEClient(this);
Client->ICEServers->AddURL("stun:stun.l.google.com:19302");
Client->OnICECandidate = OnICECandidate;
Client->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 się sukcesem, a agent kontrolujący oznaczy USE-CANDIDATE, komponent wyzwala OnICECandidatePairNominated ze zwycięską parą, a aCandidatePair.Local / Remote wskazują, które dwa adresy zostały wybrane.

Świeżość zgody

Implementuje sondy świeżości zgody zgodne z RFC 7675: żądanie Binding na nominowanej parze co ConsentInterval milisekund oraz OnICECandidatePairFailed z powodem Consent Freshness Timeout, gdy minie ConsentTimeout bez odpowiedzi.

Niezależny od sygnalizacji

Komponent nie zakłada konkretnego kanału sygnalizacyjnego. Umieszczasz aCandidate.AsString w swojej sygnalizacji WebSocket, SIP lub HTTP, a to, co wraca, przekazujesz do AddRTCIceCandidate, a następnie do ProcessCandidates.

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.
Najkorzystniejsza oferta: All-AccessWszystkie produkty eSeGeCe, ze wsparciem Premium w cenie, już od €1,059 rocznie.
Zobacz cennik All-Access

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.