面向 Delphi 和 C++ Builder 的 QUIC 与 HTTP/3 库 | sgcQUIC

sgcQUIC — 面向 Delphi、C++ Builder 和 .NET 的 QUIC 与 HTTP/3

面向 Delphi、C++ Builder 和 .NET 的完整 QUIC 与 HTTP/3 技术栈。sgcQUIC 提供四个调色板组件 — 一对原始 QUIC 传输客户端与服务器(RFC 9000),以及一对 HTTP/3 客户端与服务器(RFC 9114)— 均基于 OpenSSL 3.5 中的原生 QUIC 引擎构建。QPACK 头部压缩、Alt-Svc 发现、0-RTT、连接迁移和 WebTransport 均内置其中,同一套 API 同时运行于 Object Pascal 和 C#。

简要答案:是的,Delphi 可以使用 HTTP/3。sgcQUIC 是面向 Delphi、C++ Builder 和 .NET 的 QUIC 与 HTTP/3 库,截至 2026 年 8 月,它是唯一一个为这两种协议同时提供客户端和服务器的库。它以四个调色板组件的形式安装,构建于 OpenSSL 3.5 中的原生 QUIC 引擎之上,并附带完整源代码。

QUIC 传输 (RFC 9000)
HTTP/3 (RFC 9114) + QPACK
OpenSSL 3.5 原生 QUIC
Delphi / C++ Builder / .NET
WebTransport (RFC 9220)

在 Delphi 中实现 QUIC 与 HTTP/3 的选择

HTTP/3 已是正式标准,承载着全球网络流量中相当大的份额,所有主流浏览器和 CDN 都已支持它。Object Pascal 生态的跟进则慢了一些。下面根据各厂商自己的文档,列出每个成熟的 Delphi 网络库在 QUIC 和 HTTP/3 上的现状。

QUIC (RFC 9000) HTTP/3 (RFC 9114) 厂商文档的说明
sgcQUIC 客户端和服务器 客户端和服务器 四个组件构建于 OpenSSL 3.5 内置 QUIC 引擎之上,内置 QPACK、Alt-Svc、0-RTT、连接迁移和 WebTransport。
Indy 一个 TCP 与 UDP 套接字框架,附带经典的高层协议。QUIC 不属于该库的一部分。
ICS (Overbyte) ICS 下载页面写得很明白:“ICS 没有支持 QUIC 的计划。”
TMS Sparkle / FNC WebSocket 基于 http.sys 技术栈的 HTTP 与 HTTPS 客户端以及服务器。文档中既未提及 QUIC,也未提及 HTTP/3。
/n software IPWorks 涵盖 HTTP、WebSockets、gRPC、FTP 等的综合组件套件。文档中既未提及 QUIC,也未提及 HTTP/3。
Devart SecureBridge SSH、SFTP、TLS、WebSocket 和 SignalR,全部基于 TCP。文档中既未提及 QUIC,也未提及 HTTP/3。
mORMot 2 维护者表示不支持 HTTP/2 且没有相关计划,该框架转而依赖基于 WebSockets 的 REST。

整理自 2026 年 8 月的厂商文档: ICS 下载页面TMS SparkleIPWorksDevart SecureBridgemORMot 2Indy。 如果某个厂商在此日期之后推出 QUIC 支持,本表格将会更新。

同样的 HTTP 语义,全新的传输层

HTTP/3 保留了您已经熟悉的方法、状态码和头部,并用 QUIC 取代 TCP — 一种内置 TLS 1.3 的基于 UDP 的传输协议。sgcQUIC 通过 OpenSSL 3.5 中的原生 QUIC 支持来驱动它,因此您可以从 Delphi、C++ Builder 或 .NET 获得现代传输层,而无需单独的库。

一次握手,无队头阻塞

QUIC(RFC 9000)将传输层握手与 TLS 1.3 握手合并为一次发送,并消除了传输层的队头阻塞 — 丢失的数据包只会阻塞其承载数据所属的流,而不会阻塞整个连接。

基于 OpenSSL 3.5 原生 QUIC 构建

该引擎在 OpenSSL 加载时自动被检测到。使用附带的 OpenSSL 3.5 二进制文件,您将获得 qmBuiltin 引擎,它支持每个连接上的多个流,也是这些组件所围绕构建的引擎。

QPACK 头部压缩

HTTP/3 使用 QPACK(RFC 9204)压缩头部 — 这是 HTTP/3 对 HPACK 的替代方案,专为 QUIC 的乱序传递而设计,动态表更新通过专用的编码器和解码器流传输。

连接迁移

QUIC 连接通过连接 ID 而非地址四元组来标识,因此会话可以在客户端更换网络后继续存活 — 一个连接可以跟随设备从 Wi-Fi 切换到移动数据,而无需重新握手。

0-RTT 与多流

全新连接只需一次往返即可完成,恢复的会话可以在第一次发送中携带 0-RTT 数据。在内置引擎上,EnableMultiStreamOpenStream 可在一个连接上开出多个独立的 QUIC 流。

WebTransport 会话

WebTransport(RFC 9220)通过 Extended CONNECT 协商,并直接把 QUIC 流交给应用程序,专为内置引擎之上的低延迟双向流量而设计。

四个组件,两个层级

一对用于流和数据报的原始 QUIC 传输组件,以及一对在同一引擎之上进行请求/响应通信的 HTTP/3 组件。每个组件都链接到自己的页面,附带 Delphi、C++ Builder 和 .NET 示例。

TsgcQUICClient

原始 QUIC 传输客户端。打开一个 QUIC 连接,在一个或多个流上发送和接收字节(RFC 9000),支持 0-RTT 和连接迁移 — 不含 HTTP 语义的纯 QUIC。

查看组件 →

TsgcQUICServer

原始 QUIC 传输服务器。绑定一个 UDP 端口,终止 TLS 1.3,并为每个 QUIC 连接和流引发事件,让您在 QUIC 之上构建自己的协议。

查看组件 →

TsgcHTTP3Client

HTTP/3 客户端(RFC 9114)。所有动词均可以阻塞或异步方式调用,支持 QPACK 压缩、Alt-Svc 发现、服务器推送、Extended CONNECT 隧道和 WebTransport 会话。

查看组件 →

TsgcHTTP3Server

HTTP/3 服务器。通过 QUIC 处理请求,继承自 TsgcQUICServer,为每个请求引发一个事件,并可以推送响应、打开 WebTransport 会话和发送数据报。

查看组件 →

查看完整功能矩阵 →

通过 HTTP/3 发起 GET 请求

连接到主机和端口,然后发出请求。默认端口是 443。Delphi、C++ Builder 和 .NET 中使用同一套 API。

uses
  sgcHTTP3_Client;

var
  oClient: TsgcHTTP3Client;
  vBody: string;
begin
  oClient := TsgcHTTP3Client.Create(nil);
  oClient.OnResponse := OnResponseHandler;
  oClient.OnAltSvc   := OnAltSvcHandler;

  oClient.Connect('www.example.com', 443);
  vBody := oClient.Get('https://www.example.com/');   // request over QUIC
  oClient.Disconnect;
end;
// includes: sgcHTTP3_Client.hpp

TsgcHTTP3Client *oClient = new TsgcHTTP3Client(NULL);
oClient->OnResponse = OnResponseHandler;
oClient->OnAltSvc   = OnAltSvcHandler;

oClient->Connect("www.example.com", 443);
String vBody = oClient->Get("https://www.example.com/");   // request over QUIC
oClient->Disconnect();
using esegece.sgcWebSockets;

var oClient = new TsgcHTTP3Client();
oClient.OnResponse += OnResponseHandler;
oClient.OnAltSvc   += OnAltSvcHandler;

oClient.Connect("www.example.com", 443);
var vBody = oClient.Get("https://www.example.com/");   // request over QUIC
oClient.Disconnect();

HTTP/3、HTTP/2、WebSocket 还是原始 QUIC?

QUIC 并不会取代您现有的一切。它只在特定条件下更有优势,代价是需要一条贯通网络的 UDP 通路。请据此判断您的功能真正需要哪种传输协议。

选择 HTTP/3

您的客户端处于丢包严重的网络或移动网络中,需要一次性获取大量资源,或者服务端已经通过 Alt-Svc 公告了 HTTP/3。HTTP/3 消除了传输层的队头阻塞,因此单个丢失的数据包不会再拖慢正在传输的其他所有请求。请使用 TsgcHTTP3Client

继续使用 HTTP/2

您的流量在数据中心内部或可靠链路上传输,或者路径中的代理或防火墙会拦截 UDP。HTTP/2 已经在 TCP 之上提供了多路复用和头部压缩,而且更有可能不受干扰地穿越企业网络。

面向 Delphi 的 HTTP/2 客户端 →

继续使用 WebSocket

您需要在客户端与服务器之间进行长连接、对称、面向消息的推送,并且需要它今天就能穿透世界上的各种代理。基于 TLS 的 WebSocket 仍然是生产环境中兼容性最好的双向传输方式。

sgcWebSockets →

下探到原始 QUIC

您承载的是自定义协议,HTTP 语义只会成为累赘,例如媒体、遥测或游戏状态数据。TsgcQUICClientTsgcQUICServer 直接把 QUIC 流和数据报交给您,TLS 1.3 与连接迁移都已处理妥当。

TsgcQUICClient →

完整的实时传输协议选型指南 →

sgcQUIC 实现的 RFC 标准

基于标准构建的技术栈,而非私有传输协议。

RFC 9000 — QUIC

QUIC 传输层:单次合并的传输 + TLS 1.3 握手、独立的流、连接 ID 和连接迁移。通过 TsgcQUICClientTsgcQUICServer 直接暴露。

RFC 9114 — HTTP/3

QUIC 之上的 HTTP 语义:您熟悉的方法、状态码和头部,映射到 QUIC 流上。由 TsgcHTTP3ClientTsgcHTTP3Server 实现。

RFC 9204 — QPACK

HTTP/3 的头部压缩,专为 QUIC 的乱序传递而设计,动态表通过专用的编码器和解码器流同步。

RFC 9220 — WebTransport

通过 Extended CONNECT 在 HTTP/3 之上引导 WebTransport,将 QUIC 流交给应用程序,用于低延迟双向流量。

sgcWebSockets 的附加组件

sgcQUIC 以附加组件的形式授权。所有许可证都包含完整源代码、1 年更新以及 70% 的续订折扣。

sgcQUIC

€149

提供 Single、Team 和 Site 授权,均含完整源代码。

  • TsgcQUICClient & TsgcQUICServer
  • TsgcHTTP3Client & TsgcHTTP3Server
  • Delphi、C++ Builder 和 .NET
  • 完整源代码
  • 1 年更新

★ 需要 sgcWebSockets

sgcQUIC 需要 sgcWebSockets Enterprise。

查看价格并订购

Delphi 中 QUIC 与 HTTP/3 的常见问题

开发者在为 Delphi、C++ Builder 或 .NET 应用程序添加 HTTP/3 之前最常问到的问题。

开箱即用是不支持的。Delphi RTL 和 Indy 都基于 TCP,没有 QUIC 传输层,而 ICS 声明没有支持 QUIC 的计划。sgcQUIC 补上了这一块:安装组件后,TsgcHTTP3Client 即可通过 QUIC 发出 HTTP/3 请求,TsgcHTTP3Server 则负责响应。它构建于 OpenSSL 3.5 中的原生 QUIC 引擎之上,因此无需绑定或分发额外的 C 语言库。
有。sgcQUIC 通过 TsgcQUICClientTsgcQUICServer 直接实现 RFC 9000,因此您可以在 QUIC 流和数据报上承载自定义协议,而不必引入 HTTP 语义。截至 2026 年 8 月,没有其他 Delphi 网络库在文档中说明支持 QUIC,所以如果您需要在 Object Pascal 中使用原始传输层,这就是可选方案。
可以。TsgcHTTP3Server 继承自 TsgcQUICServer,绑定一个 UDP 端口,终止 TLS 1.3,并为每个请求引发一个事件。它可以推送响应、打开 WebTransport 会话并发送数据报。其他语言可用的大多数 QUIC 技术栈要么只有客户端,要么需要在前面架设反向代理,因此在 Go 和 Rust 之外,进程内原生 HTTP/3 服务器并不多见。
sgcQUIC 遵循 sgcWebSockets 的支持矩阵:Delphi 7 至 Delphi 13 Florence 以及对应的 C++ Builder 版本,另外还有一套 API 相同的 .NET 实现。试用版安装程序按 IDE 版本提供,其中已经包含 QUIC 和 HTTP/3 组件,因此无需单独下载。
需要,OpenSSL 3.5 或更高版本。QUIC 从 OpenSSL 3.5 开始作为原生引擎提供,sgcQUIC 会在 OpenSSL 加载时自动检测它。使用附带的 3.5 二进制文件,您将获得 qmBuiltin 引擎,它支持在一个连接上开出多个独立的流,也是这些组件的设计基础。此外还有一条 qmCustom 路径,适用于 quictls 风格的构建,但每个连接仅限一个流。
Win32、Win64 和 Linux64 是主要目标平台,此外在 OpenSSL 3.5 QUIC 引擎可用的地方还支持 macOS、iOS 和 Android。请记住,QUIC 运行在 UDP 之上,通常使用 443 端口,因此客户端与服务器之间的路径必须允许 UDP 通过。有些企业网络仍会拦截它,这也是 HTTP/3 客户端会回退到 HTTP/2 的原因。
WebTransport(RFC 9220)是浏览器与服务器之间流量方面 WebSocket 的现代继任者。它通过 Extended CONNECT 在 HTTP/3 之上协商,并直接把 QUIC 流和不可靠数据报交给应用程序,非常适合低延迟的双向工作负载。sgcQUIC 在内置引擎上支持 WebTransport 会话,客户端和服务器端均可使用。
sgcQUIC 是 sgcWebSockets Enterprise 的附加组件,同时也包含在 All-Access 套装中。提供 Single、Team 和 Site 授权,每种都含完整源代码和一年更新。购买前请下载试用版,在您自己的项目中评估全部四个组件。
3,000+Developers
20+Years
761+Components
30+API Integrations
5Platforms
30 天退款保证不满意?可在购买后 30 天内申请全额退款。 查看退款政策

无需离开 IDE 即可交付 QUIC 与 HTTP/3

为您的 Delphi、C++ Builder 或 .NET 应用程序添加现代 Web 正在迁移的传输协议 — 使用您已经在用的语言。

eSeGeCe 的其他产品

将 sgcQUIC 与我们的其他 Delphi、C++ Builder 和 .NET 组件库搭配使用。

sgcWebSockets

企业级 WebSocket、HTTP/2、MQTT、AMQP、WebRTC 和 AI/LLM 组件。sgcQUIC 是 sgcWebSockets Enterprise 的附加组件。

了解更多 →

sgcHTML

89 个面向 Delphi、C++ Builder 和 .NET 的数据感知服务器端 HTML/UI 组件,基于 Bootstrap 5 和 htmx。

了解更多 →

sgcSign

企业级数字签名 — XAdES、PAdES、CAdES 和 ASiC,支持 10 个密钥提供商和 21 个欧盟国家配置文件。

了解更多 →

sgcOpenAPI

OpenAPI 3.0 解析器和 SDK 生成器。几秒钟内将任何 OpenAPI 规范转换为强类型的 Delphi 客户端。

了解更多 →

sgcBiometrics

面向 Delphi 和 C++ Builder 的原生 Windows Hello、指纹和 Windows 生物识别框架组件。

了解更多 →

sgcIndy

更新版 Indy TCP/IP 组件,为 Delphi 7 至 13 提供现代 TLS、IPv6 和 HTTP/2 支持。

了解更多 →