TCP + TLS : trois allers-retours
SYN, SYN-ACK et ACK ouvrent le socket. ClientHello, ServerHello et Finished établissent TLS. C’est seulement ensuite que part la première requête.
TCP plus TLS demande trois allers-retours avant que le premier octet de réponse n’arrive. QUIC fusionne le transport et la poignée de main cryptographique en une seule, et une connexion reprise peut envoyer des données dès le tout premier paquet. sgcQUIC offre à Delphi, C++ Builder et .NET un transport QUIC natif et un client et serveur HTTP/3 construits dessus, sur le moteur QUIC d’OpenSSL 3.5.
Un complément de sgcWebSockets Enterprise. Voir les tarifs →La poignée de main du transport, celle de TLS et la première requête coûtent chacune un aller-retour sur TCP. QUIC transporte les trois en un seul échange.
SYN, SYN-ACK et ACK ouvrent le socket. ClientHello, ServerHello et Finished établissent TLS. C’est seulement ensuite que part la première requête.
QUIC fusionne le transport et la poignée de main cryptographique en un seul échange, donc la requête voyage avec la poignée de main et la réponse revient avec elle.
Un client déjà connecté peut envoyer sa première requête dans le tout premier paquet, avant la fin de la poignée de main.
Un démarrage rapide commenté et sous-titré : un serveur et un client HTTP/3, puis une connexion QUIC brute avec plusieurs flux. Rien ne se télécharge avant que tu appuies sur lecture.
Lance un serveur et un client HTTP/3, et ouvre une connexion QUIC brute depuis Delphi.
Utilise TsgcQUICClient et TsgcQUICServer pour un transport nu avec ton propre format de trames, ou prends directement TsgcHTTP3Client et TsgcHTTP3Server quand le format sur le fil est HTTP.
TsgcQUICClient et TsgcQUICServer parlent QUIC brut : plusieurs flux indépendants sur une connexion chiffrée, datagrammes non fiables et migration de connexion quand l’adresse IP du client change en pleine session.
TsgcHTTP3Client et TsgcHTTP3Server ajoutent la sémantique HTTP par-dessus : en-têtes de requête et de réponse compressés avec QPACK, découverte Alt-Svc, et les mêmes méthodes et codes d’état que ton code HTTP/2 utilise déjà.
Un client déjà connecté peut envoyer sa première requête dans le tout premier paquet, avant la fin de la poignée de main.
Un identifiant de connexion désigne la session, pas l’adresse IP, donc un téléphone qui passe du Wi-Fi au réseau mobile garde ses flux ouverts.
Flux bidirectionnels et datagrammes non fiables sur une seule requête Extended CONNECT, pour les clients navigateur qui parlent WebTransport.
La poignée de main QUIC et TLS 1.3 s’exécute sur le moteur QUIC propre à OpenSSL 3.5. Il n’y a aucune bibliothèque QUIC séparée à compiler ni à embarquer.
sgcQUIC n’est pas une implémentation partielle. Le transport, le découpage en trames, la compression des en-têtes et l’extension WebTransport sont tous couverts, sur le moteur QUIC natif d’OpenSSL 3.5.
Le protocole de transport QUIC : flux, datagrammes, contrôle de flux et migration de connexion.
HTTP/3, la même sémantique de requête et de réponse que HTTP/2, portée par des flux QUIC.
Compression d’en-têtes QPACK, conçue pour la livraison des flux QUIC dans le désordre.
WebTransport sur HTTP/3, flux bidirectionnels et datagrammes sur une seule requête Extended CONNECT.
La même forme que n’importe quel autre client HTTP de sgcWebSockets : définis des propriétés, gère un événement, appelle une méthode. Côté serveur, c’est un composant et un gestionnaire.
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;
Le client et le serveur partagent le même modèle de connexion, de flux et de datagrammes des deux côtés. La matrice complète des fonctionnalités →
La licence, le canal de support et le rythme des mises à jour sont ceux que tu as déjà. Chaque licence inclut le code source complet, un an de mises à jour et la redistribution libre des binaires.
1 licence développeur. Utilisation sur une machine à la fois.
2 licences développeur. Utilisation sur deux machines à la fois.
Développeurs illimités. Toutes les machines de l’entreprise.
sgcQUIC nécessite sgcWebSockets Enterprise, que tu peux ajouter à la même commande. Client et serveur QUIC, client et serveur HTTP/3, QPACK, Alt-Svc et WebTransport, pour Delphi, C++ Builder et .NET.
Voir les tarifs et les éditionsPlébiscité par des développeurs Delphi, C++ Builder, Lazarus et .NET dans le monde entier.
Votre bibliothèque sgcWebSockets est très utile et facile à configurer. Continuez votre excellent travail !
sgcWebSockets est incroyable et votre support est le meilleur !
Merci beaucoup pour votre aide et votre support, j’adore vos composants.
Transport QUIC brut, client et serveur HTTP/3 et WebTransport, sur le moteur QUIC d’OpenSSL 3.5. Code source complet, redistribution libre des binaires, en complément de sgcWebSockets Enterprise.
sgcQUIC partage ses conventions avec les autres bibliothèques de composants eSeGeCe pour Delphi, C++ Builder et .NET. Elles sont livrées avec le code source complet et se déploient sans redevance.
WebSocket, HTTP/2, MQTT, AMQP, WebRTC, IA et plus de 30 intégrations d’API. La licence Enterprise sur laquelle s’appuie sgcQUIC.
Composants HTML et d’interface côté serveur sur Bootstrap 5 et htmx. Sers l’interface rendue sur ce même transport HTTP/3.
Composants IA, LLM et MCP pour Delphi et C++ Builder. Sept fournisseurs de LLM derrière un seul composant, plus MCP, embeddings et synthèse vocale. Autonome, le runtime sgcWebSockets Core est inclus.
Composants clients MQTT, AMQP 0.9.1 et 1.0, Apache Kafka et STOMP pour Delphi et C++ Builder. Autonome, le runtime sgcWebSockets Core est inclus.
Client OAuth2, client JWT et prise en charge de WebAuthn pour Delphi et C++ Builder. Autonome, le runtime sgcWebSockets Core est inclus.
Serveur HTTP, client HTTP/2, client gRPC et clients Google Cloud Pub/Sub, Calendar et FCM pour Delphi et C++ Builder. Autonome, le runtime sgcWebSockets Core est inclus.
Serveur REST, serveur OpenAPI et composants clients OpenAPI pour Delphi et C++ Builder. Autonome, le runtime sgcWebSockets Core est inclus.
Parser OpenAPI 3.x, générateur de SDK Pascal natif, composant serveur OpenAPI, et plus de 1 195 SDK cloud préconçus.
XAdES, PAdES, CAdES et ASiC pour les documents, Authenticode, ClickOnce, NuGet et VSIX pour le code.
Crée, édite, affiche, signe, caviarde et valide des fichiers PDF en pur Object Pascal, sans DLL à déployer. Licence séparée.
Windows Hello, capteurs d’empreintes digitales et Windows Biometric Framework pour Delphi et C++ Builder.
Composants Indy TCP/IP mis à jour avec TLS moderne, IPv6 et HTTP/2, de Delphi 7 à 13.