sgcQUIC 跳过 握手往返。 原生 QUIC。

TCP 加 TLS 需要三次往返,才能等到响应的第一个字节。QUIC 把传输层握手和加密握手合并成一次,恢复的连接甚至可以在第一个数据包中就发送数据。sgcQUIC 为 Delphi、C++ Builder 和 .NET 提供了一个原生 QUIC 传输,以及构建在其上的 HTTP/3 客户端和服务器,基于 OpenSSL 3.5 QUIC 引擎。

sgcWebSockets Enterprise 的附加组件。查看价格 →
  • RFC 9000、9114、9204
  • WebTransport (RFC 9220)
  • 0-RTT
  • 连接迁移
  • Delphi
  • C++ Builder
  • .NET
  • 4同一个面板页面上的组件
  • 4RFC:9000、9114、9204 和 9220
  • 1数据发送前的往返次数,TCP 加 TLS 则需要三次
  • 0-RTT恢复会话的第一个数据包即可发出首个请求
  • 3语言:Delphi、C++ Builder 和 .NET
为什么选择 QUIC

同样的 TLS 1.3 安全性,更少的网络往返。

在 TCP 上,传输层握手、TLS 握手和首个请求各需要一次往返。QUIC 把这三者合并在一次交换中完成。

TCP + TLS 1.3 QUIC (HTTP/3) 客户端 服务器 客户端 服务器 SYN SYN-ACK ACK ClientHello ServerHello, cert Finished GET /pets/42 200 OK 3 次往返才有数据 Initial + Handshake + GET Handshake + 200 OK 1 次往返就有数据 在恢复的会话中 0-RTT: GET + early data 同样的 TLS 1.3 安全性,更少的网络往返。

TCP + TLS:三次往返

SYN、SYN-ACK 和 ACK 打开套接字。ClientHello、ServerHello 和 Finished 建立 TLS。然后才发出第一个请求。

QUIC:一次往返

QUIC 把传输层握手和加密握手合并成一次交换,因此请求随握手一同发出,响应也随握手一同返回。

恢复会话:0-RTT

之前连接过的客户端可以在第一个数据包中就发送首个请求,甚至在握手完成之前。

观看运行效果

几分钟内用 Delphi 上手 QUIC 和 HTTP/3。

配有旁白和字幕的快速入门:先是一个 HTTP/3 服务器和客户端,然后是带有多个流的原始 QUIC 连接。按下播放之前不会下载任何内容。

sgcQUIC 快速入门

在 Delphi 中运行 HTTP/3 服务器和客户端,并打开一个原始 QUIC 连接。

  1. HTTP/3 客户端创建它,用一个 URL 调用 Get,然后读取响应。请求方法、状态码和头部都是您已经熟悉的那些。
  2. 同步或异步处理 OnResponse 和 OnError,然后调用 GetAsync,请求会在不阻塞窗体的情况下运行。
  3. HTTP/3 服务器创建一个 TsgcHTTP3Server,为它指定端口、证书和私钥,然后处理 OnH3Request。
  4. 原始 QUIC 与多个流单独使用 TsgcQUICClient,并通过 EnableMultiStream 获得相互独立的流,每个流都有序且受流量控制。
  5. 部署之前QUIC 通过 UDP 传输,因此只开放 TCP 443 的防火墙会将其拦截。
四个组件

原始 QUIC,或在其上运行 HTTP/3。

如果需要自行定义帧格式的纯传输层,请使用 TsgcQUICClient 和 TsgcQUICServer ;如果线上格式就是 HTTP,则直接使用 TsgcHTTP3Client 和 TsgcHTTP3Server 。

QUIC 客户端与服务器

TsgcQUICClient 和 TsgcQUICServer 使用原始 QUIC 通信:在一个加密连接上运行多个独立的流、不可靠数据报,以及当客户端 IP 地址在会话中途改变时的连接迁移。

查看 QUIC 组件 →

HTTP/3 客户端与服务器

TsgcHTTP3Client 和 TsgcHTTP3Server 在其上叠加 HTTP 语义:使用 QPACK 压缩的请求和响应头部、Alt-Svc 发现,以及您的 HTTP/2 代码已经在使用的相同方法和状态码。

查看 HTTP/3 组件 →

0-RTT 会话恢复

之前连接过的客户端可以在第一个数据包中就发送首个请求,甚至在握手完成之前。

连接迁移

连接 ID 而非 IP 地址标识会话,因此手机从 Wi-Fi 切换到蜂窝网络时,其数据流仍能保持打开。

WebTransport

通过一次 Extended CONNECT 请求提供双向流和不可靠数据报,供支持 WebTransport 的浏览器客户端使用。

原生 QUIC,无外部依赖

QUIC 和 TLS 1.3 握手运行在 OpenSSL 3.5 自身的 QUIC 引擎上。没有需要单独构建或引入的 QUIC 库。

基于标准构建

QUIC 与 HTTP/3,完全遵循 RFC 标准。

sgcQUIC 不是一个残缺的实现。传输、成帧、头部压缩以及 WebTransport 扩展全部涵盖,构建在原生 OpenSSL 3.5 QUIC 引擎之上。

RFC 9000

QUIC 传输协议:流、数据报、流量控制和连接迁移。

RFC 9114

HTTP/3,与 HTTP/2 相同的请求和响应语义,通过 QUIC 流承载。

RFC 9204

QPACK 头部压缩,专为 QUIC 的乱序流传递而设计。

RFC 9220

基于 HTTP/3 的 WebTransport,通过一次 Extended CONNECT 请求实现双向流和数据报。

代码

通过 HTTP/3 发起一次请求。

和其他任何 sgcWebSockets HTTP 客户端一样的形态:设置属性、处理一个事件、调用一个方法。服务器端是一个组件加一个处理程序。

uses
  sgcHTTP3_Client;
var
  vClient: TsgcHTTP3Client;
begin
  vClient := TsgcHTTP3Client.Create(nil);
  vClient.Host := 'api.example.com';
  vClient.Port := 443;
  vClient.OnResponse :=
    procedure(Sender: TObject; const AStatus: Integer; const ABody: string)
    begin
      Memo1.Lines.Add(Format('%d: %s', [AStatus, ABody]));
    end;
  vClient.OnAltSvc :=
    procedure(Sender: TObject; const AAltSvc: string)
    begin
      Memo1.Lines.Add('Alt-Svc: ' + AAltSvc);  // h3 advertised over HTTP/2
    end;
  vClient.Connect;
  vClient.Get('/pets/42');
end;
uses
  sgcQUIC_Client;
var
  vQUIC: TsgcQUICClient;
begin
  vQUIC := TsgcQUICClient.Create(nil);
  vQUIC.Host := 'quic.example.com';
  vQUIC.Port := 4433;
  vQUIC.EnableMultiStream := True;
  vQUIC.OnQUICConnect :=
    procedure(Sender: TObject)
    var
      vStreamId: Int64;
    begin
      vStreamId := vQUIC.OpenStream;
      vQUIC.WriteData(vStreamId, 'ping');
    end;
  vQUIC.OnQUICStreamData :=
    procedure(Sender: TObject; const AStreamId: Int64; const AData: string)
    begin
      Memo1.Lines.Add(Format('stream %d: %s', [AStreamId, AData]));
    end;
  vQUIC.Active := True;
end;
uses
  sgcHTTP3_Server;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FServer := TsgcHTTP3Server.Create(nil);
  FServer.Port := 443;
  FServer.QUICOptions.SSLOptions.CertFile := 'server.crt';
  FServer.QUICOptions.SSLOptions.KeyFile  := 'server.key';

  // One handler for every incoming HTTP/3 request
  FServer.OnH3Request :=
    procedure(const Ctx: TsgcHTTP3Context)
    begin
      if Ctx.Path = '/pets/42' then
        Ctx.RespondJSON(200, '{"name":"Rex"}')
      else
        Ctx.Respond(404, 'Not found');
    end;

  FServer.Active := True;
end;
  1. 一个端口,一份证书,两种协议TsgcHTTP3Server 在一个 UDP 端口上通过 QUIC 提供 HTTP/3 服务。与现有的 HTTP/2 服务器配对后,旧版客户端仍可通过 TCP 正常工作,使用的是您的 HTTP/2 服务器已经加载的同一份证书。
  2. Alt-Svc,让升级自动完成一个普通的 HTTP/2 响应会携带 Alt-Svc: h3=":443" 头部。能识别它的客户端会在下一次请求时开启 QUIC,无需重定向,也不需要第二个域名。
  3. WebTransport,同一个端口一次 Extended CONNECT 请求就能把一个流升级为 WebTransport,让浏览器客户端在普通 HTTP/3 请求之外,还能获得双向流和数据报。

客户端和服务器在两侧共享同一套连接、流和数据报模型。 完整功能矩阵 →

HTTP/3 服务器组件

sgcWebSockets 的一部分

sgcWebSockets Enterprise 的附加组件。

许可证、支持渠道和更新节奏都和您已经拥有的一致。每个许可证都包含完整源代码、一年更新和免版税部署。

Single

1 位开发者许可证。同一时间用于一台机器。

€149

Team

2 位开发者许可证。同一时间用于两台机器。

€249

Site

开发者人数不限。公司所有机器。

€399

sgcQUIC 需要 sgcWebSockets Enterprise,您可以把它加入同一份订单。包含 QUIC 客户端和服务器、HTTP/3 客户端和服务器、QPACK、Alt-Svc 和 WebTransport,适用于 Delphi、C++ Builder 和 .NET。

查看价格和版本
用户评价

开发者怎么说

受到全球各地 Delphi、C++ Builder、Lazarus 和 .NET 开发者的信赖。

你们的 sgcWebSockets 库非常实用,而且易于设置。请继续保持!
Simone Moretti Delphi 开发者
sgcWebSockets 非常出色,你们的支持也是最棒的!
Christian Meyer 创始人兼首席技术官
非常感谢你们的帮助和支持,我很喜欢你们的组件。
Mark Steinfeld 首席技术官

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

原始 QUIC 传输、HTTP/3 客户端和服务器,以及 WebTransport,构建在 OpenSSL 3.5 QUIC 引擎之上。完整源代码,免版税部署,作为 sgcWebSockets Enterprise 的附加组件。

更多来自 eSeGeCe

eSeGeCe 的其他产品

sgcQUIC 与 eSeGeCe 面向 Delphi、C++ Builder 和 .NET 的其他组件库共享同样的约定。它们提供完整源代码,并可免版税部署。

sgcWebSockets

WebSocket、HTTP/2、MQTT、AMQP、WebRTC、AI 及 30+ API 集成。sgcQUIC 正是构建在这份 Enterprise 许可证之上。

sgcHTML

基于 Bootstrap 5 和 htmx 的服务器端 HTML 和界面组件。通过同一个 HTTP/3 传输提供渲染好的界面。

sgcAI

面向 Delphi 和 C++ Builder 的 AI、LLM 和 MCP 组件。一个组件即可对接七家 LLM 提供商,另有 MCP、嵌入和语音。独立产品,随附 sgcWebSockets Core 运行时。

sgcMQ

面向 Delphi 和 C++ Builder 的 MQTT、AMQP 0.9.1 和 1.0、Apache Kafka 与 STOMP 客户端组件。独立产品,随附 sgcWebSockets Core 运行时。

sgcAuth

面向 Delphi 和 C++ Builder 的 OAuth2 客户端、JWT 客户端和 WebAuthn 支持。独立产品,随附 sgcWebSockets Core 运行时。

sgcHTTP

面向 Delphi 和 C++ Builder 的 HTTP 服务器、HTTP/2 客户端、gRPC 客户端以及 Google Cloud Pub/Sub、Calendar 和 FCM 客户端。独立产品,随附 sgcWebSockets Core 运行时。

sgcREST

面向 Delphi 和 C++ Builder 的 REST 服务器、OpenAPI 服务器和 OpenAPI 客户端组件。独立产品,随附 sgcWebSockets Core 运行时。

sgcOpenAPI

OpenAPI 3.x 解析器、原生 Pascal SDK 生成器、OpenAPI 服务器组件,以及 1,195+ 预构建云 SDK。

sgcSign

文档使用 XAdES、PAdES、CAdES 和 ASiC,代码使用 Authenticode、ClickOnce、NuGet 和 VSIX。

sgcPDF

使用纯 Object Pascal 创建、编辑、查看、签名、涂黑并验证 PDF 文件,无需部署任何 DLL。单独许可销售。

sgcBiometrics

面向 Delphi 和 C++ Builder 的 Windows Hello、指纹传感器和 Windows 生物特征框架。

sgcIndy

更新后的 Indy TCP/IP 组件,为 Delphi 7 到 13 提供现代 TLS、IPv6 和 HTTP/2。

博客最新动态

查看全部文章 →

您正在浏览 eSeGeCe 的 sgcQUIC 视角。

换个角度看看 →
30 天退款保证不满意?可在购买后 30 天内申请全额退款。 查看退款政策