ICE 客户端

在 Delphi/C++Builder 中运行完整的 ICE 算法 — 收集主机、服务器反射和中继候选,执行 STUN 连接检查,按 RFC 8445 提名最佳候选对。

TsgcICEClient

实现 RFC 8445 ICE 状态机 — 候选收集、优先级排序、候选对生成、连接检查(带 USE-CANDIDATE 的 BindingRequest)、提名和同意刷新。

组件类

TsgcICEClient

平台

Windows, macOS, Linux, iOS, Android

版本

Professional / Enterprise

配置服务器、收集、交换、检查

配置 STUN/TURN ICE 服务器,调用 GatherCandidates,与对端带外交换候选列表,然后 StartChecks 提名可用候选对。

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); // 带外 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();

内部功能

可复用的 ICE 引擎,在 TsgcRTCPeerConnection 下层运行 — 或独立用于非 WebRTC 的 P2P。

候选收集

并行枚举来自每个本地接口的主机候选、来自每个 STUN 服务器的服务器反射候选以及来自每个 TURN 服务器的中继候选。

候选对生成与优先级排序

按 RFC 8445 §6.1.2 计算候选对优先级并排序检查列表。冻结的候选对在其基础取得进展时解冻。

连接检查

按标准发送带 PRIORITY、ICE-CONTROLLING / ICE-CONTROLLED、USE-CANDIDATE 属性的 STUN BindingRequest。触发检查在入站刺激时触发。

提名

当候选对成功且控制代理标记 USE-CANDIDATE 时,组件以 iceConnected 触发 OnICEConnectionStateChanged,然后在最终选定对上触发 iceCompleted

同意刷新

实现 RFC 7675 同意刷新探测 — 在提名对上定期发送 STUN BindingRequest,同意丢失时触发 OnICEConnectionStateChanged(iceFailed)

信令无关

组件不假定特定的信令通道 — 您通过 WebSocket / SIP / HTTP 信令编组本地候选,并将远程候选反馈回来。

规范与参考

本组件所实现协议的权威来源。

文档与演示

直达组件参考,获取可立即运行的演示项目,并下载试用版。

在线帮助 — TsgcICEClient 本组件的完整属性、方法和事件参考。
演示项目 — Demos\35.P2P\04.ICE 可立即运行的示例项目,随 sgcWebSockets 包一起提供 — 请从下方下载试用版。
技术文档 (PDF) 仅涵盖本组件的功能、快速入门、Delphi 和 C++ Builder 代码示例及主要参考来源。
用户手册 (PDF) 涵盖库中每个组件的综合手册。

准备好在 Delphi 中运行 ICE 了吗?

下载免费试用版,为您的 Delphi 应用程序添加完整的 ICE 候选收集和连接检查功能。