适用于 Delphi 和 C++ Builder 的 STUN 服务器组件 | eSeGeCe

STUN 服务器

在 Delphi 中运行您自己的 STUN(RFC 8489)服务器。通过标准 XOR-MAPPED-ADDRESS 回复响应绑定请求 — 适用于私有网络、本地部署和 ICE 自举场景。

TsgcSTUNServer

符合 RFC 8489 标准的 STUN 服务器 — 处理 Binding / Indication 消息,以 XOR-MAPPED-ADDRESS 回复,并可选启用 MESSAGE-INTEGRITY 进行长期身份验证。

组件类

TsgcSTUNServer

支持平台

Windows, macOS, Linux, iOS, Android

版本

Enterprise

拖放组件、设置端口,即可获得 STUN 端点

设置 Port(默认 3478),Active := True — 服务器即可以标准 RFC 8489 XOR-MAPPED-ADDRESS 回复响应绑定请求。

uses
  sgcP2P;

var
  STUNServer: TsgcSTUNServer;
begin
  STUNServer := TsgcSTUNServer.Create(nil);
  STUNServer.Port := 3478;

  // optional: long-term credentials
  STUNServer.Authentication.Enabled  := True;
  STUNServer.Authentication.Realm    := 'example.com';
  STUNServer.OnSTUNAuthenticate := procedure(Sender: TObject;
    const aUsername: string; var aPassword: string;
    var Accept: Boolean)
  begin
    aPassword := LookupPassword(aUsername);
    Accept    := aPassword <> '';
  end;

  STUNServer.Active := True;
end;
// uses: sgcP2P
TsgcSTUNServer *STUNServer = new TsgcSTUNServer(this);
STUNServer->Port = 3478;
STUNServer->Active = true;

内部功能

自托管 STUN 服务器 — 适合本地 WebRTC 部署和私有云测试。

绑定请求处理器

以 XOR-MAPPED-ADDRESS、MAPPED-ADDRESS(传统)和 FINGERPRINT 响应入站绑定请求 — 符合标准 RFC 8489 回复格式。

长期/短期身份验证

切换 Authentication.Enabled 以要求 MESSAGE-INTEGRITY。OnSTUNAuthenticate 暴露请求中的用户名,以便从您的存储中返回匹配密码。

按 IP 速率限制

配合 TsgcWSRateLimiter 对每个源 IP 的入站 STUN 请求进行限速 — 有效防范放大攻击滥用。

IPv4 / IPv6

通过 IPVersion 绑定到任一地址族或双栈模式。XOR-MAPPED-ADDRESS 回复使用入站传输的地址族。

TCP 上的 TLS(RFC 8489 §5)

对于 STUN-over-TLS 变体,可为底层 TCP 监听器配置 SSL 选项 — 当 UDP 在网络出口被阻断时非常有用。

诊断

OnSTUNRequest / OnSTUNResponse 记录每个事务的日志,包括方法、消息类型和解析后的属性列表 — 非常适合调试部署问题。

规范与参考资料

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

文档与示例

直达组件参考文档、获取即用示例项目并下载试用版。

在线帮助 — TsgcSTUNServer 该组件的完整属性、方法和事件参考。
示例项目 — Demos\35.P2P\02.STUN 即用示例项目,包含在 sgcWebSockets 包中 — 请从下方下载试用版。
技术文档(PDF) 功能介绍、快速入门、Delphi 与 C++ Builder 代码示例及原始参考资料 — 仅限此组件。
用户手册(PDF) 涵盖库中每个组件的综合手册。

STUN 服务器常见问题

关于在 Delphi 和 C++ Builder 中运行自托管 STUN 服务器的常见问题。

放置一个 TsgcSTUNServer 组件,设置 Port(默认 3478)并设置 Active := True。服务器随后会用标准的 XOR-MAPPED-ADDRESS 应答来响应入站 Binding 请求。可选择启用 Authentication 并处理 OnSTUNAuthenticate,以要求使用长期凭据的 MESSAGE-INTEGRITY。
它按照 RFC 8489 实现 STUN,处理 Binding 和 Indication 消息,并用 XOR-MAPPED-ADDRESS、旧式 MAPPED-ADDRESS 和 FINGERPRINT 进行应答。它支持 IPv4 和 IPv6、可选的 STUN-over-TLS,并参考 RFC 5780 进行 NAT 行为发现。
不需要。TsgcSTUNServer 是一个自托管 STUN 服务器,可直接嵌入您自己的 Delphi 或 C++ Builder 应用程序中,因此您无需部署和运行单独的 coturn 实例。它非常适合私有网络、本地 WebRTC 部署以及在您自己控制下的 ICE 引导。
STUN 服务器是 sgcWebSockets Enterprise 版本的一部分,支持从 Delphi 7 到最新 Delphi 版本以及相应的 C++ Builder 版本,可在 Windows、macOS、Linux、iOS 和 Android 上运行。下载免费试用版,在您自己的项目中搭建 STUN 端点。

准备好运行您自己的 STUN 服务器了吗?

下载免费试用版,在 Delphi 中搭建 STUN 端点。