TCP + TLS: drei Roundtrips
SYN, SYN-ACK und ACK öffnen den Socket. ClientHello, ServerHello und Finished richten TLS ein. Erst dann geht die erste Anfrage raus.
TCP plus TLS braucht drei Roundtrips, bevor das erste Byte einer Antwort ankommt. QUIC fasst den Transport- und den Krypto-Handshake in einem zusammen, und eine wiederaufgenommene Verbindung kann schon im allerersten Paket Daten senden. sgcQUIC gibt Delphi, C++ Builder und .NET einen nativen QUIC-Transport sowie einen darauf aufbauenden HTTP/3-Client und -Server, auf Basis der QUIC-Engine von OpenSSL 3.5.
Ein Add-on zu sgcWebSockets Enterprise. Preise ansehen →Der Transport-Handshake, der TLS-Handshake und die erste Anfrage kosten über TCP jeweils einen Roundtrip. QUIC erledigt alle drei in einem Austausch.
SYN, SYN-ACK und ACK öffnen den Socket. ClientHello, ServerHello und Finished richten TLS ein. Erst dann geht die erste Anfrage raus.
QUIC fasst den Transport- und den Krypto-Handshake in einem Austausch zusammen, sodass die Anfrage mit dem Handshake reist und die Antwort mit ihm zurückkommt.
Ein Client, der sich zuvor schon einmal verbunden hat, kann seine erste Anfrage bereits im allerersten Paket senden, noch bevor der Handshake abgeschlossen ist.
Ein vertonter Schnellstart mit Untertiteln: ein HTTP/3-Server und -Client, dann eine rohe QUIC-Verbindung mit mehreren Streams. Nichts wird geladen, bevor du auf Play drückst.
Starte einen HTTP/3-Server und -Client und öffne eine rohe QUIC-Verbindung aus Delphi.
Verwende TsgcQUICClient und TsgcQUICServer für einen reinen Transport mit eigenem Framing, oder greife direkt zu TsgcHTTP3Client und TsgcHTTP3Server , wenn das Wire-Format HTTP ist.
TsgcQUICClient und TsgcQUICServer sprechen reines QUIC: mehrere unabhängige Streams auf einer verschlüsselten Verbindung, unzuverlässige Datagramme und Verbindungsmigration, wenn sich die IP-Adresse des Clients mitten in der Sitzung ändert.
TsgcHTTP3Client und TsgcHTTP3Server legen HTTP-Semantik obendrauf: Anfrage- und Antwort-Header komprimiert mit QPACK, Alt-Svc-Discovery und dieselben Methoden und Statuscodes, die dein HTTP/2-Code bereits verwendet.
Ein Client, der sich zuvor schon einmal verbunden hat, kann seine erste Anfrage bereits im allerersten Paket senden, noch bevor der Handshake abgeschlossen ist.
Eine Connection-ID identifiziert die Sitzung, nicht die IP-Adresse, sodass ein Smartphone beim Wechsel von WLAN zu Mobilfunk seine Streams offen hält.
Bidirektionale Streams und unzuverlässige Datagramme über eine einzige Extended-CONNECT-Anfrage, für Browser-Clients, die WebTransport sprechen.
Der QUIC- und TLS-1.3-Handshake läuft auf der eigenen QUIC-Engine von OpenSSL 3.5. Es gibt keine separate QUIC-Bibliothek zu bauen oder einzubinden.
sgcQUIC ist keine Teilimplementierung. Transport, Framing, Header-Kompression und die WebTransport-Erweiterung sind vollständig abgedeckt, aufgebaut auf der nativen OpenSSL-3.5-QUIC-Engine.
Das QUIC-Transportprotokoll: Streams, Datagramme, Flusskontrolle und Verbindungsmigration.
HTTP/3, dieselbe Anfrage- und Antwortsemantik wie HTTP/2, transportiert über QUIC-Streams.
QPACK-Header-Kompression, konzipiert für die außer der Reihe erfolgende Zustellung von QUIC-Streams.
WebTransport über HTTP/3, bidirektionale Streams und Datagramme über eine einzige Extended-CONNECT-Anfrage.
Dieselbe Form wie bei jedem anderen sgcWebSockets-HTTP-Client: Eigenschaften setzen, ein Ereignis behandeln, eine Methode aufrufen. Die Serverseite besteht aus einer Komponente und einem 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;
Client und Server teilen sich auf beiden Seiten dasselbe Verbindungs-, Stream- und Datagramm-Modell. Die vollständige Funktionsmatrix →
Die Lizenz, der Support-Kanal und der Update-Rhythmus sind die, die du bereits hast. Jede Lizenz enthält den vollständigen Quellcode, ein Jahr Updates und lizenzgebührenfreie Weitergabe.
Lizenz für 1 Entwickler. Nutzung auf einem Rechner gleichzeitig.
Lizenzen für 2 Entwickler. Nutzung auf zwei Rechnern gleichzeitig.
Unbegrenzte Entwicklerzahl. Alle Rechner im Unternehmen.
sgcQUIC setzt sgcWebSockets Enterprise voraus, das du derselben Bestellung hinzufügen kannst. QUIC-Client und -Server, HTTP/3-Client und -Server, QPACK, Alt-Svc und WebTransport, für Delphi, C++ Builder und .NET.
Preise und Editionen ansehenVertrauen von Delphi-, C++ Builder-, Lazarus- und .NET-Entwicklern weltweit.
Eure sgcWebSockets-Bibliothek ist sehr nützlich und einfach einzurichten. Macht weiter so!
sgcWebSockets ist großartig und euer Support ist der beste!
Vielen Dank für eure Hilfe und Unterstützung, ich liebe eure Komponenten.
Reiner QUIC-Transport, HTTP/3-Client und -Server sowie WebTransport, auf der OpenSSL-3.5-QUIC-Engine. Vollständiger Quellcode, royaltyfreie Bereitstellung, als Add-on zu sgcWebSockets Enterprise.
sgcQUIC teilt seine Konventionen mit den anderen eSeGeCe-Komponentenbibliotheken für Delphi, C++ Builder und .NET. Sie werden mit vollständigem Quellcode geliefert und lassen sich lizenzgebührenfrei weitergeben.
WebSocket, HTTP/2, MQTT, AMQP, WebRTC, KI und 30+ API-Integrationen. Die Enterprise-Lizenz, auf der sgcQUIC aufbaut.
Serverseitige HTML- und UI-Komponenten auf Bootstrap 5 und htmx. Liefere die gerenderte UI über denselben HTTP/3-Transport aus.
Komponenten für KI, LLM und MCP für Delphi und C++ Builder. Sieben LLM-Anbieter hinter einer einzigen Komponente, dazu MCP, Embeddings und Sprache. Eigenständig, die sgcWebSockets Core Runtime ist enthalten.
Client-Komponenten für MQTT, AMQP 0.9.1 und 1.0, Apache Kafka und STOMP für Delphi und C++ Builder. Eigenständig, die sgcWebSockets Core Runtime ist enthalten.
OAuth2-Client, JWT-Client und WebAuthn-Unterstützung für Delphi und C++ Builder. Eigenständig, mit gebündelter sgcWebSockets-Core-Runtime.
HTTP-Server, HTTP/2-Client, gRPC-Client sowie Clients für Google Cloud Pub/Sub, Calendar und FCM für Delphi und C++ Builder. Eigenständig, die sgcWebSockets Core Runtime ist enthalten.
REST-Server-, OpenAPI-Server- und OpenAPI-Client-Komponenten für Delphi und C++ Builder. Eigenständig, mit gebündelter sgcWebSockets-Core-Runtime.
OpenAPI-3.x-Parser, nativer Pascal-SDK-Generator, OpenAPI-Server-Komponente und 1.195+ vorgefertigte Cloud-SDKs.
XAdES, PAdES, CAdES und ASiC für Dokumente, Authenticode, ClickOnce, NuGet und VSIX für Code.
PDF-Dateien erstellen, bearbeiten, ansehen, signieren, schwärzen und validieren in reinem Object Pascal, ganz ohne DLL. Wird eigenständig lizenziert.
Windows Hello, Fingerabdrucksensoren und das Windows Biometric Framework für Delphi und C++ Builder.
Aktualisierte Indy-TCP/IP-Komponenten mit modernem TLS, IPv6 und HTTP/2 für Delphi 7 bis 13.