STUN 客户端
使用类型化的 STUN(RFC 8489)客户端发现 NAT 后的反射端点。用作 ICE 候选收集和 WebRTC 的引导步骤。
使用类型化的 STUN(RFC 8489)客户端发现 NAT 后的反射端点。用作 ICE 候选收集和 WebRTC 的引导步骤。
STUN 客户端 — 绑定请求、XOR-MAPPED-ADDRESS 提取、MESSAGE-INTEGRITY / FINGERPRINT 支持,按 RFC 8489 的重传计时器。
TsgcSTUNClient
Windows, macOS, Linux, iOS, Android
Standard / Professional / Enterprise
设置 STUN 服务器主机/端口,调用 SendBindingRequest,然后从 OnSTUNMappedAddress 读取 MappedAddress / MappedPort。
uses
sgcP2P;
var
STUN: TsgcSTUNClient;
begin
STUN := TsgcSTUNClient.Create(nil);
STUN.Host := 'stun.l.google.com';
STUN.Port := 19302;
STUN.OnSTUNMappedAddress := procedure(Sender: TObject;
const aMappedAddress, aMappedPort: string)
begin
Memo1.Lines.Add('public: ' + aMappedAddress + ':' + aMappedPort);
end;
STUN.SendBindingRequest;
end;
// uses: sgcP2P
TsgcSTUNClient *STUN = new TsgcSTUNClient(this);
STUN->Host = "stun.l.google.com";
STUN->Port = 19302;
STUN->SendBindingRequest();
具有 ICE 使用的消息完整性和指纹扩展的类型化 RFC 8489 STUN 客户端。
SendBindingRequest 发送 STUN 0x0001 消息;响应在 OnSTUNMappedAddress 中以解析后的 XOR-MAPPED-ADDRESS 属性呈现。
设置 Authentication.UserName / Password,组件计算 MESSAGE-INTEGRITY(HMAC-SHA1 / HMAC-SHA256)。realm 和 nonce 从 401 挑战响应中提取。
STUN over UDP 需要应用层重传。组件按 RFC 8489 §6.2.1 实现标准退避(RTO / Rc / Rm)。
XOR-MAPPED-ADDRESS 以任一地址族返回 — 组件解码两者并以规范文本形式存储在 MappedAddress 中。
针对多个 STUN 服务器驱动多个 TsgcSTUNClient 实例,为每个本地接口收集服务器反射 ICE 候选。
内部使用 TsgcUDPClient;本地端口绑定可配置,因此 STUN、ICE 和数据路径可在需要时共享端点。