Delphi ICE İstemcisi
Tam ICE algoritmasını Delphi/C++Builder'da çalıştırın — host, server-reflexive ve relay adaylarını toplayın, STUN bağlantı denetimleri yapın, RFC 8445'e göre en iyi çifti seçin.
Tam ICE algoritmasını Delphi/C++Builder'da çalıştırın — host, server-reflexive ve relay adaylarını toplayın, STUN bağlantı denetimleri yapın, RFC 8445'e göre en iyi çifti seçin.
RFC 8445 ICE durum makinesini uygular — aday toplama, önceliklendirme, çift oluşturma, bağlantı denetimleri (USE-CANDIDATE ile BindingRequest), seçim ve consent freshness.
TsgcICEClient
Windows, macOS, Linux, iOS, Android
Enterprise
STUN/TURN ICE sunucularını yapılandırın, GatherCandidates çağırın, aday listesini eşle değiş tokuş edin (bant dışı), ardından denetimleri çalıştırmak ve çalışan bir çifti aday göstermek için ProcessCandidates çağırın.
uses
sgcP2P, sgcP2P_ICE_Classes;
// TFormICE, FClient: TsgcICEClient ve FLog: TStringList tutar
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 aday satırıdır, sinyalleşme kanalınız için hazırdır
SignalToPeer(aCandidate.AsString);
end;
// uzak adaylar sinyalleşme kanalınız üzerinden ulaşır
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();
TsgcRTCPeerConnection'ın altına yerleşen — veya WebRTC dışı P2P için kendi başına çalışan yeniden kullanılabilir bir ICE motoru.
Her yerel arabirimden host adaylarını, her STUN sunucusundan server-reflexive adaylarını, her TURN sunucusundan relayed adaylarını numaralandırır — tümü paralel olarak.
Aday-çift önceliklerini RFC 8445 §6.1.2'ye göre hesaplar ve denetim listesini sıralar. Dondurulmuş çiftler, temelleri ilerledikçe çözülür.
Standarda göre PRIORITY, ICE-CONTROLLING / ICE-CONTROLLED, USE-CANDIDATE öznitelikleriyle STUN BindingRequest gönderir. Tetiklenen denetimler gelen uyaranla çalışır.
Bir çift başarılı olduğunda ve kontrol eden aracı USE-CANDIDATE işaretlediğinde, bileşen kazanan çiftle birlikte OnICECandidatePairNominated tetikler; aCandidatePair.Local / Remote ise hangi iki adresin seçildiğini söyler.
RFC 7675 consent-freshness yoklamalarını uygular: aday gösterilen çift üzerinde her ConsentInterval milisaniyede bir Binding isteği ve ConsentTimeout süresi yanıtsız geçtiğinde Consent Freshness Timeout nedeniyle OnICECandidatePairFailed.
Bileşen belirli bir sinyalleşme kanalı varsaymaz. aCandidate.AsString değerini WebSocket, SIP veya HTTP sinyalleşmeniz üzerine koyarsınız ve geri geleni AddRTCIceCandidate ve ardından ProcessCandidates ile beslersiniz.
Bileşen referansına doğrudan bağlanın, kullanıma hazır demo projesini alın ve denemeyi indirin.
| Çevrimiçi Yardım — TsgcICEClient Bu bileşen için tam özellik, metot ve olay referansı. | Aç | |
| Demo Projesi — Demos\35.P2P\04.ICE Kullanıma hazır örnek proje. sgcWebSockets paketi içinde gelir — aşağıdan denemeyi indirin. | Aç | |
| Teknik Belge (PDF) Delphi ve C++ Builder için özellikler, hızlı başlangıç, 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ç |