TCP + TLS: trzy round-tripy
SYN, SYN-ACK i ACK otwierają gniazdo. ClientHello, ServerHello i Finished ustanawiają TLS. Dopiero potem wychodzi pierwsze żądanie.
TCP wraz z TLS potrzebuje trzech rund, zanim dotrze pierwszy bajt odpowiedzi. QUIC łączy handshake transportu i kryptograficzny w jeden przelot, a wznowione połączenie może wysłać dane już w pierwszym pakiecie. sgcQUIC daje Delphi, C++ Builder i .NET natywny transport QUIC oraz zbudowany na nim klient i serwer HTTP/3, na silniku QUIC OpenSSL 3.5.
Dodatek do sgcWebSockets Enterprise. Zobacz cennik →Uzgodnienie transportu, uzgodnienie TLS i pierwsze żądanie kosztują po jednym round-tripie w TCP. QUIC realizuje wszystkie trzy w jednej wymianie.
SYN, SYN-ACK i ACK otwierają gniazdo. ClientHello, ServerHello i Finished ustanawiają TLS. Dopiero potem wychodzi pierwsze żądanie.
QUIC łączy uzgodnienie transportu i kryptografii w jedną wymianę, więc żądanie podróżuje razem z uzgodnieniem, a odpowiedź wraca razem z nim.
Klient, który łączył się wcześniej, może wysłać pierwsze żądanie już w pierwszym pakiecie, zanim handshake się zakończy.
Szybki start z lektorem i napisami: serwer i klient HTTP/3, a potem surowe połączenie QUIC z wieloma strumieniami. Nic nie jest pobierane, dopóki nie naciśniesz odtwarzania.
Uruchom serwer i klienta HTTP/3 oraz otwórz surowe połączenie QUIC z 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.
Klient, który łączył się wcześniej, może wysłać pierwsze żądanie już w pierwszym pakiecie, zanim handshake się zakończy.
Connection ID identyfikuje sesję, a nie adres IP, dzięki czemu telefon przechodzący z Wi-Fi na dane mobilne zachowuje otwarte strumienie.
Dwukierunkowe strumienie i niepewne datagramy w ramach jednego żądania Extended CONNECT, dla klientów przeglądarkowych obsługujących WebTransport.
Handshake QUIC i TLS 1.3 działa na własnym silniku QUIC OpenSSL 3.5. Nie ma osobnej biblioteki QUIC do budowania czy dołączania.
sgcQUIC to nie częściowa implementacja. Transport, ramkowanie, kompresja nagłówków i rozszerzenie WebTransport są w pełni obsługiwane, na bazie natywnego silnika QUIC OpenSSL 3.5.
Protokół transportowy QUIC: strumienie, datagramy, kontrola przepływu i migracja połączenia.
HTTP/3, ta sama semantyka żądań i odpowiedzi co w HTTP/2, przenoszona przez strumienie QUIC.
Kompresja nagłówków QPACK, zaprojektowana z myślą o dostarczaniu strumieni QUIC poza kolejnością.
WebTransport nad HTTP/3, dwukierunkowe strumienie i datagramy w ramach jednego żądania Extended CONNECT.
Ten sam schemat co w każdym innym kliencie HTTP sgcWebSockets: ustaw właściwości, obsłuż zdarzenie, wywołaj metodę. Po stronie serwera to jeden komponent i jedna procedura obsługi.
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;
Klient i serwer współdzielą po obu stronach ten sam model połączenia, strumieni i datagramów. Pełna matryca funkcji →
Licencja, kanał wsparcia i rytm aktualizacji są te same, które już masz. Każda licencja obejmuje pełny kod źródłowy, rok aktualizacji i bezpłatną redystrybucję.
Licencja dla 1 programisty. Użycie na jednej maszynie naraz.
Licencje dla 2 programistów. Użycie na dwóch maszynach naraz.
Nieograniczona liczba programistów. Wszystkie maszyny firmy.
sgcQUIC wymaga sgcWebSockets Enterprise, które możesz dodać do tego samego zamówienia. Klient i serwer QUIC, klient i serwer HTTP/3, QPACK, Alt-Svc i WebTransport, dla Delphi, C++ Builder i .NET.
Zobacz cennik i edycjeZaufali nam programiści Delphi, C++ Builder, Lazarus i .NET na całym świecie.
Wasza biblioteka sgcWebSockets jest bardzo przydatna i łatwa w konfiguracji. Tak trzymać!
sgcWebSockets jest niesamowity, a wasze wsparcie jest najlepsze!
Bardzo dziękuję za pomoc i wsparcie, uwielbiam wasze komponenty.
Surowy transport QUIC, klient i serwer HTTP/3 oraz WebTransport, na silniku QUIC OpenSSL 3.5. Pełny kod źródłowy, wdrożenie bez opłat licencyjnych, jako dodatek do sgcWebSockets Enterprise.
sgcQUIC ma wspólne konwencje z pozostałymi bibliotekami komponentów eSeGeCe dla Delphi, C++ Builder i .NET. Są dostarczane z pełnym kodem źródłowym i można je wdrażać bez opłat licencyjnych.
WebSocket, HTTP/2, MQTT, AMQP, WebRTC, AI oraz ponad 30 integracji API. Licencja Enterprise, na której bazuje sgcQUIC.
Komponenty HTML i UI po stronie serwera na Bootstrap 5 i htmx. Serwuj wyrenderowany interfejs przez ten sam transport HTTP/3.
Komponenty AI, LLM i MCP dla Delphi oraz C++ Builder. Siedmiu dostawców LLM za jednym komponentem, a do tego MCP, embeddingi i mowa. Produkt samodzielny, z dołączonym środowiskiem uruchomieniowym sgcWebSockets Core.
Komponenty klienckie MQTT, AMQP 0.9.1 i 1.0, Apache Kafka oraz STOMP dla Delphi i C++ Builder. Produkt samodzielny, z dołączonym środowiskiem uruchomieniowym sgcWebSockets Core.
Klient OAuth2, klient JWT i obsługa WebAuthn dla Delphi i C++ Builder. Produkt samodzielny, z dołączonym środowiskiem uruchomieniowym sgcWebSockets Core.
Serwer HTTP, klient HTTP/2, klient gRPC oraz klienty Google Cloud Pub/Sub, Calendar i FCM dla Delphi i C++ Builder. Produkt samodzielny, z dołączonym środowiskiem uruchomieniowym sgcWebSockets Core.
Komponenty serwera REST, serwera OpenAPI i klienta OpenAPI dla Delphi i C++ Buildera. Samodzielne, z dołączonym środowiskiem uruchomieniowym sgcWebSockets Core.
Parser OpenAPI 3.x, natywny generator SDK w Pascalu, komponent serwera OpenAPI oraz ponad 1 195 gotowych SDK chmurowych.
XAdES, PAdES, CAdES i ASiC dla dokumentów, Authenticode, ClickOnce, NuGet i VSIX dla kodu.
Twórz, edytuj, przeglądaj, podpisuj, cenzuruj i weryfikuj pliki PDF w czystym Object Pascalu, bez DLL do wdrożenia. Licencjonowany osobno.
Windows Hello, czytniki linii papilarnych i Windows Biometric Framework dla Delphi i C++ Builder.
Zaktualizowane komponenty Indy TCP/IP z nowoczesnym TLS, IPv6 i HTTP/2 od Delphi 7 do 13.