STUN 客户端

使用类型化的 STUN(RFC 8489)客户端发现 NAT 后的反射端点。用作 ICE 候选收集和 WebRTC 的引导步骤。

TsgcSTUNClient

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)。

IPv4 / IPv6

XOR-MAPPED-ADDRESS 以任一地址族返回 — 组件解码两者并以规范文本形式存储在 MappedAddress 中。

用作 ICE 主机收集器

针对多个 STUN 服务器驱动多个 TsgcSTUNClient 实例,为每个本地接口收集服务器反射 ICE 候选。

底层套接字

内部使用 TsgcUDPClient;本地端口绑定可配置,因此 STUN、ICE 和数据路径可在需要时共享端点。

规范与参考

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

文档与演示

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

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

准备好发现 NAT 映射了吗?

下载免费试用版,为您的 Delphi 应用程序添加基于 STUN 的 NAT 发现功能。