Delphi ICE 클라이언트

Delphi/C++Builder에서 완전한 ICE 알고리즘을 실행하세요 — 호스트, 서버 리플렉시브 및 릴레이 후보를 수집하고, STUN 연결 확인을 수행하며, RFC 8445에 따라 최적 쌍을 선택합니다.

TsgcICEClient

RFC 8445 ICE 상태 머신을 구현합니다 — 후보 수집, 우선순위 지정, 쌍 생성, 연결 확인(USE-CANDIDATE 포함 BindingRequest), 선택 및 동의 유효성 확인.

컴포넌트 클래스

TsgcICEClient

프로토콜

ICE (RFC 8445)

플랫폼

Windows, macOS, Linux, iOS, Android

에디션

Enterprise

서버 구성, 수집, 교환, 확인

STUN/TURN ICE 서버를 구성하고 GatherCandidates를 호출한 뒤, 대역 외로 피어와 후보 목록을 교환하고 ProcessCandidates로 검사를 실행해 작동하는 쌍을 지명하세요.

uses
  sgcP2P, sgcP2P_ICE_Classes;

// TFormICE는 FClient: TsgcICEClient와 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은 시그널링 채널에 바로 실을 수 있는 후보 라인
  SignalToPeer(aCandidate.AsString);
end;

// 원격 후보는 시그널링 채널로 도착함
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 아래에서 동작하거나 비WebRTC P2P에서 독립적으로 실행할 수 있는 재사용 가능한 ICE 엔진입니다.

후보 수집

모든 로컬 인터페이스에서 호스트 후보를, 각 STUN 서버에서 서버 리플렉시브 후보를, 각 TURN 서버에서 릴레이 후보를 병렬로 수집합니다.

쌍 생성 및 우선순위 지정

RFC 8445 §6.1.2에 따라 후보 쌍 우선순위를 계산하고 확인 목록을 정렬합니다. 동결된 쌍은 기반이 진행되면 동결 해제됩니다.

연결 확인

표준에 따라 PRIORITY, ICE-CONTROLLING / ICE-CONTROLLED, USE-CANDIDATE 속성이 포함된 STUN BindingRequest를 전송합니다. 트리거된 확인은 인바운드 자극에 의해 실행됩니다.

선택

쌍이 성공하고 제어 에이전트가 USE-CANDIDATE를 표시하면 컴포넌트가 선택된 쌍과 함께 OnICECandidatePairNominated를 발생시키고, aCandidatePair.Local / Remote가 어떤 두 주소가 선택되었는지 알려 줍니다.

동의 유효성 확인

RFC 7675 동의 유효성 프로브를 구현합니다. ConsentInterval 밀리초마다 지명된 쌍으로 Binding 요청을 보내고, 응답 없이 ConsentTimeout이 지나면 Consent Freshness Timeout 사유와 함께 OnICECandidatePairFailed를 발생시킵니다.

시그널링 무관

컴포넌트는 특정 시그널링 채널을 가정하지 않습니다. aCandidate.AsString을 WebSocket이나 SIP, HTTP 시그널링에 실어 보내고, 돌아온 값을 AddRTCIceCandidate에 전달한 다음 ProcessCandidates를 호출하세요.

사양 및 참고문헌

이 컴포넌트가 구현하는 프로토콜의 공식 출처입니다.

문서 및 데모

컴포넌트 레퍼런스로 바로 이동하고, 실행 가능한 데모 프로젝트를 받아보세요.

온라인 도움말 — TsgcICEClient 이 컴포넌트의 전체 속성, 메서드 및 이벤트 레퍼런스입니다.
데모 프로젝트 — Demos\35.P2P\04.ICE 실행 가능한 예제 프로젝트입니다. sgcWebSockets 패키지에 포함되어 있습니다.
기술 문서 (PDF) Delphi 및 C++ Builder용 코드 샘플과 기능 설명이 포함된 기술 문서입니다.
사용자 매뉴얼 (PDF) 라이브러리의 모든 컴포넌트를 다루는 종합 매뉴얼입니다.
최고의 가성비: All-Access모든 eSeGeCe 제품과 프리미엄 지원이 포함되어 연 €1,059부터 이용할 수 있어요.
All-Access 가격 보기

Delphi에서 ICE를 실행할 준비가 되셨나요?

무료 체험판을 다운로드하고 Delphi 애플리케이션에 완전한 ICE 후보 수집과 연결 확인을 추가해 보세요.