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.
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.
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.
TsgcICEClient
Windows, macOS, Linux, iOS, Android
Enterprise
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();
Wielokrotnego użytku silnik ICE działający poniżej TsgcRTCPeerConnection — lub samodzielnie dla P2P nie-WebRTC.
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.
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.
Wysyła STUN BindingRequests z atrybutami PRIORITY, ICE-CONTROLLING / ICE-CONTROLLED, USE-CANDIDATE zgodnie ze standardem. Wyzwolone sprawdzenia uruchamiają się na bodziec przychodzący.
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.
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.
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.
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. | Otwórz | |
| Projekt demonstracyjny — Demos\35.P2P\04.ICE Gotowy do uruchomienia projekt przykładowy. Dostarczany w pakiecie sgcWebSockets — pobierz wersję próbną poniżej. | Otwórz | |
| Dokument techniczny (PDF) Funkcje, szybki start, przykłady kodu dla Delphi i C++ Builder oraz odniesienia do źródeł — tylko ten komponent. | Otwórz | |
| Podręcznik użytkownika (PDF) Kompleksowy podręcznik obejmujący każdy komponent biblioteki. | Otwórz |