TsgcQUICClient is een laagniveau QUIC-client (RFC 9000) die een QUIC-verbinding met een server opent en gegevens uitwisselt via QUIC-streams.
TsgcQUICClient is een laag-niveau QUIC-client die het transport implementeert dat is gedefinieerd in RFC 9000. Het opent een QUIC-verbinding met een server en wisselt gegevens uit via QUIC-streams, en is gebouwd op de QUIC-implementatie van OpenSSL 3.5 of hoger. Volg de onderstaande stappen om dit component te configureren:
De client kan QUIC via twee engines aansturen, gekozen volgens de IOHandler van SSLQUICOptions. Met iohOpenSSL (standaard) wordt de ingebouwde OpenSSL 3.5+ QUIC-engine gebruikt wanneer beschikbaar, met de sgc-engine (de Pascal QUIC-stack in de sgcQUIC_*-units) als terugval; beide ondersteunen inmiddels meerdere streams via EnableMultiStream. Met iohNativeTLS wordt altijd de sgc-engine gebruikt, met de TLS 1.3-handshake op de native TLS-engine, en de pakketbescherming is ook native, dus wordt OpenSSL helemaal niet geladen. Zie QUIC voor de volledige vergelijking van de engines.
1. Maak een nieuw exemplaar van de component TsgcQUICClient en stel de Host en Port van de QUIC-server in.
2. Behandel het OnQUICConnect-event, open de verbinding door Active op True in te stellen en stuur data met WriteData. voorbeeld:
oClient := TsgcQUICClient.Create(nil);
oClient.Host := 'www.example.com';
oClient.Port := 443;
oClient.SSLQUIC := True;
oClient.OnQUICConnect := OnQUICConnectEvent;
oClient.Active := True;
oClient.WriteData('Hello QUIC');
procedure OnQUICConnectEvent(Sender: TObject; const
Connection: TsgcQUICConnectionClient);
begin
ShowMessage('Connected to QUIC server');
end;
| Naam | Beschrijving |
|---|---|
| Active | Opent of sluit de QUIC-verbinding naar de externe server. |
| Host | IP-adres of DNS-naam van de QUIC-server waarmee de client verbinding maakt. |
| Port | UDP-poort die wordt gebruikt om verbinding te maken met de QUIC-server. |
| SSLQUIC | Schakelt de TLS 1.3-beveiligingslaag in die QUIC vereist (standaard ingeschakeld). |
| QUICOptions | Afstemmingsopties aan clientzijde voor het QUIC-transport. |
| Naam | Beschrijving |
|---|---|
| Connect | Opent de QUIC-verbinding met de server en wacht totdat deze tot stand is gebracht of de time-out is verstreken. |
| Disconnect | Sluit de QUIC-verbinding met de server. |
| WriteData | Verstuurt gegevens naar de server via de standaard QUIC-stream. |
| OpenStream | Opent een nieuwe QUIC-stream en retourneert deze zodat gegevens erover kunnen worden verzonden. |
| Naam | Beschrijving |
|---|---|
| OnQUICConnect | Wordt geactiveerd direct nadat de client met succes verbinding maakt met de QUIC-server. |
| OnQUICDisconnect | Wordt geactiveerd wanneer de QUIC-verbinding is gesloten. |
| OnQUICException | Wordt geactiveerd wanneer een uitzondering optreedt op de QUIC-verbinding. |
oClient := TsgcQUICClient.Create(nil);
oClient.Host := 'www.example.com';
oClient.Port := 443;
oClient.SSLQUIC := True;
oClient.OnQUICConnect := OnQUICConnectEvent;
oClient.OnQUICDisconnect := OnQUICDisconnectEvent;
oClient.OnQUICException := OnQUICExceptionEvent;
if oClient.Connect then
begin
oClient.WriteData('Hello QUIC');
oClient.Disconnect;
end;
procedure OnQUICConnectEvent(Sender: TObject; const Connection: TsgcQUICConnectionClient);
begin
Log('connected');
end;
procedure OnQUICDisconnectEvent(Sender: TObject; const Connection: TsgcQUICConnectionClient; const Code: Integer);
begin
Log('disconnected, code ' + IntToStr(Code));
end;
procedure OnQUICExceptionEvent(Sender: TObject; E: Exception);
begin
Log('error: ' + E.Message);
end;