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

TURN 服务器

在 Delphi 中运行您自己的 TURN(RFC 8656)服务器。为无法建立点对点路径的客户端分配中继传输地址,支持长期凭据和按分配配额管理。

TsgcTURNServer

自托管 TURN 服务器 — 处理 Allocate / CreatePermission / ChannelBind / Send / Refresh / Data,管理分配和带宽,验证长期凭据。

组件类

TsgcTURNServer

支持平台

Windows, macOS, Linux, iOS, Android

版本

Enterprise

拖放、设置 Realm、分发凭据

设置 Port + Realm,通过 OnTURNAuthenticate 提供每用户密码,Active := True — 服务器即可为任何 RFC 8656 客户端分配中继。

uses
  sgcP2P;

var
  TURNServer: TsgcTURNServer;
begin
  TURNServer := TsgcTURNServer.Create(nil);
  TURNServer.Port  := 3478;
  TURNServer.Realm := 'turn.example.com';

  TURNServer.OnTURNAuthenticate := procedure(Sender: TObject;
    const aUsername: string; var aPassword: string;
    var Accept: Boolean)
  begin
    aPassword := LookupPassword(aUsername);
    Accept    := aPassword <> '';
  end;

  TURNServer.Active := True;
end;
// uses: sgcP2P
TsgcTURNServer *TURNServer = new TsgcTURNServer(this);
TURNServer->Port  = 3478;
TURNServer->Realm = "turn.example.com";
TURNServer->Active = true;

内部功能

自托管中继服务器 — 让您的 WebRTC 和 ICE 部署不再依赖第三方 TURN 提供商。

Allocate / Refresh / Free

响应带 REQUESTED-TRANSPORT 的分配请求,选择空闲中继端口并追踪生命周期。Refresh 延长分配;服务器在过期时自动销毁。

CreatePermission / ChannelBind

追踪每个分配的对等方权限和通道绑定。按照 RFC 8656 §9,丢弃未经授权的对等方的 Send/Data 帧。

Send / Data / ChannelData

同时支持 36 字节的 Send/Data 包封和 4 字节的 ChannelData 帧。中继在中继传输地址和绑定对等方之间转发数据报。

长期凭据

OnTURNAuthenticate 暴露用户名;您返回密码 — 服务器验证 MESSAGE-INTEGRITY 并自动轮换 nonce。

配额

设置 Quota.MaxAllocationsPerUserQuota.MaxBandwidthKbpsQuota.AllocationLifetime 以限制滥用。OnQuotaExceeded 报告拒绝情况。

TURN over TCP / TLS

切换底层服务器的传输方式 — UDP、TCP 和 TCP 上的 TLS 均受支持。WebRTC 客户端会选择能穿透其 NAT 的传输方式。

规范与参考资料

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

文档与示例

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

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

TURN 服务器常见问题

关于在 Delphi 和 C++ Builder 中运行自托管 TURN 中继的常见问题。

放置一个 TsgcTURNServer 组件,设置 PortRealm,从 OnTURNAuthenticate 事件提供每用户密码,然后设置 Active := True。服务器随后会为任何 RFC 8656 客户端处理 Allocate、CreatePermission、ChannelBind、Send、Refresh 和 Data,在中继传输地址与绑定对等方之间转发数据报。
它按照 RFC 8656 实现 TURN,使用 MESSAGE-INTEGRITY 验证长期凭据并自动轮换 nonce。它还参考 RFC 6062 处理 TURN over TCP 分配,参考 RFC 8489 处理底层 STUN 消息格式,并支持 UDP、TCP 和 TLS over TCP 传输。
不需要。TsgcTURNServer 是一个自托管中继,可嵌入您自己的 Delphi 或 C++ Builder 应用程序中,因此您的 WebRTC 和 ICE 部署可以不再依赖第三方 TURN 提供商或单独的 coturn 安装。按分配的配额(每用户最大分配数、带宽和生命周期)可限制滥用,并通过 OnQuotaExceeded 报告拒绝情况。
TURN 服务器是 sgcWebSockets Enterprise 版本的一部分,支持从 Delphi 7 到最新 Delphi 版本以及相应的 C++ Builder 版本,可在 Windows、macOS、Linux、iOS 和 Android 上运行。下载免费试用版,在您自己的项目中搭建 TURN 中继。

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

下载免费试用版,在 Delphi 中搭建 TURN 中继服务器。