TCP + TLS: three round trips
SYN, SYN-ACK and ACK open the socket. ClientHello, ServerHello and Finished set up TLS. Only then does the first request go out.
TCP plus TLS needs three round trips before the first byte of a response arrives. QUIC folds the transport and the crypto handshake into one, and a resumed connection can send data on the very first packet. sgcQUIC gives Delphi, C++ Builder and .NET a native QUIC transport and an HTTP/3 client and server built on top of it, on the OpenSSL 3.5 QUIC engine.
An add-on to sgcWebSockets Enterprise. See pricing →The transport handshake, the TLS handshake and the first request each cost a round trip over TCP. QUIC carries all three in one exchange.
SYN, SYN-ACK and ACK open the socket. ClientHello, ServerHello and Finished set up TLS. Only then does the first request go out.
QUIC folds the transport and the crypto handshake into one exchange, so the request travels with the handshake and the response comes back with it.
A client that has connected before can send its first request on the very first packet, before the handshake finishes.
A narrated, captioned quickstart: an HTTP/3 server and client, then a raw QUIC connection with multiple streams. Nothing downloads until you press play.
Run an HTTP/3 server and client, and open a raw QUIC connection from Delphi.
Use TsgcQUICClient and TsgcQUICServer for a bare transport with your own framing, or reach straight for TsgcHTTP3Client and TsgcHTTP3Server when the wire format is HTTP.
TsgcQUICClient and TsgcQUICServer speak raw QUIC: multiple independent streams on one encrypted connection, unreliable datagrams, and connection migration when the client's IP address changes mid-session.
TsgcHTTP3Client and TsgcHTTP3Server layer HTTP semantics on top: request and response headers compressed with QPACK, Alt-Svc discovery, and the same methods and status codes your HTTP/2 code already uses.
A client that has connected before can send its first request on the very first packet, before the handshake finishes.
A Connection ID identifies the session, not the IP address, so a phone moving from Wi-Fi to cellular keeps its streams open.
Bidirectional streams and unreliable datagrams over one Extended CONNECT request, for browser clients that speak WebTransport.
The QUIC and TLS 1.3 handshake run on OpenSSL 3.5's own QUIC engine. There is no separate QUIC library to build or vendor.
sgcQUIC is not a partial implementation. Transport, framing, header compression and the WebTransport extension are all covered, on top of the native OpenSSL 3.5 QUIC engine.
The QUIC transport protocol: streams, datagrams, flow control and connection migration.
HTTP/3, the same request and response semantics as HTTP/2, carried over QUIC streams.
QPACK header compression, designed for QUIC's out-of-order stream delivery.
WebTransport over HTTP/3, bidirectional streams and datagrams on one Extended CONNECT request.
The same shape as any other sgcWebSockets HTTP client: set properties, handle an event, call a method. The server side is one component and one handler.
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;
The client and server share the same connection, stream and datagram model on both sides. The full feature matrix →
The license, the support channel and the update cadence are the ones you already have. Every license includes full source code, one year of updates and royalty-free deployment.
1 developer license. Use on one machine at a time.
2 developer licenses. Use on two machines at a time.
Unlimited developers. All company machines.
sgcQUIC requires sgcWebSockets Enterprise, which you can add to the same order. QUIC client and server, HTTP/3 client and server, QPACK, Alt-Svc and WebTransport, for Delphi, C++ Builder and .NET.
View pricing and editionsTrusted by Delphi, C++ Builder, Lazarus and .NET developers around the world.
Your sgcWebSockets library is very useful and easy to setup. Keep up the good work!
sgcWebSockets is amazing and your support is the best!
Thanks so much for your help and support, I love your components.
Raw QUIC transport, HTTP/3 client and server, and WebTransport, on the OpenSSL 3.5 QUIC engine. Full source, royalty-free deployment, as an add-on to sgcWebSockets Enterprise.
sgcQUIC shares conventions with the other eSeGeCe component libraries for Delphi, C++ Builder and .NET. They ship with full source, and they deploy royalty-free.
WebSocket, HTTP/2, MQTT, AMQP, WebRTC, AI and 30+ API integrations. The Enterprise license sgcQUIC builds on.
Server-side HTML and UI components on Bootstrap 5 and htmx. Serve the rendered UI over the same HTTP/3 transport.
AI, LLM and MCP components for Delphi and C++ Builder. Seven LLM providers behind one component, plus MCP, embeddings and speech. Standalone, with the sgcWebSockets Core runtime bundled in.
MQTT, AMQP 0.9.1 and 1.0, Apache Kafka and STOMP client components for Delphi and C++ Builder. Standalone, with the sgcWebSockets Core runtime bundled in.
OAuth2 client, JWT client and WebAuthn support for Delphi and C++ Builder. Standalone, with the sgcWebSockets Core runtime bundled in.
HTTP server, HTTP/2 client, gRPC client and Google Cloud Pub/Sub, Calendar and FCM clients for Delphi and C++ Builder. Standalone, with the sgcWebSockets Core runtime bundled in.
REST server, OpenAPI server and OpenAPI client components for Delphi and C++ Builder. Standalone, with the sgcWebSockets Core runtime bundled in.
OpenAPI 3.x parser, native Pascal SDK generator, OpenAPI server component, and 1,195+ pre-built cloud SDKs.
XAdES, PAdES, CAdES and ASiC for documents, Authenticode, ClickOnce, NuGet and VSIX for code.
Create, edit, view, sign, redact and validate PDF files in pure Object Pascal, with no DLL to deploy. Licensed on its own.
Windows Hello, fingerprint sensors and the Windows Biometric Framework for Delphi and C++ Builder.
Updated Indy TCP/IP components with modern TLS, IPv6 and HTTP/2 for Delphi 7 through 13.