TsgcQUICClient

TsgcQUICClient is een laagniveau QUIC-client (RFC 9000) die een QUIC-verbinding met een server opent en gegevens uitwisselt via QUIC-streams.

Inleiding

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;

Referentie

Belangrijkste Eigenschappen

NaamBeschrijving
ActiveOpent of sluit de QUIC-verbinding naar de externe server.
HostIP-adres of DNS-naam van de QUIC-server waarmee de client verbinding maakt.
PortUDP-poort die wordt gebruikt om verbinding te maken met de QUIC-server.
SSLQUICSchakelt de TLS 1.3-beveiligingslaag in die QUIC vereist (standaard ingeschakeld).
QUICOptionsAfstemmingsopties aan clientzijde voor het QUIC-transport.

Belangrijkste Methoden

NaamBeschrijving
ConnectOpent de QUIC-verbinding met de server en wacht totdat deze tot stand is gebracht of de time-out is verstreken.
DisconnectSluit de QUIC-verbinding met de server.
WriteDataVerstuurt gegevens naar de server via de standaard QUIC-stream.
OpenStreamOpent een nieuwe QUIC-stream en retourneert deze zodat gegevens erover kunnen worden verzonden.

Belangrijkste Gebeurtenissen

NaamBeschrijving
OnQUICConnectWordt geactiveerd direct nadat de client met succes verbinding maakt met de QUIC-server.
OnQUICDisconnectWordt geactiveerd wanneer de QUIC-verbinding is gesloten.
OnQUICExceptionWordt geactiveerd wanneer een uitzondering optreedt op de QUIC-verbinding.

Volledig voorbeeld


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;

Vereisten