TsgcQUICClient

TsgcQUICClient è un client QUIC di basso livello (RFC 9000) che apre una connessione QUIC a un server e scambia dati tramite stream QUIC.

Introduzione

TsgcQUICClient è un client QUIC di basso livello che implementa il trasporto definito in RFC 9000. Apre una connessione QUIC a un server e scambia dati su stream QUIC. Il client può guidare QUIC tramite uno di due motori, secondo l'IOHandler di SSLQUICOptions: con iohOpenSSL (il valore predefinito) viene usato lo stack QUIC integrato di OpenSSL 3.5 o successivo quando disponibile, con il motore sgc (lo stack QUIC Pascal nelle unit sgcQUIC_*) come fallback; entrambi supportano più stream tramite EnableMultiStream. Con iohNativeTLS viene sempre usato il motore sgc, con l'handshake TLS 1.3 eseguito sul motore TLS nativo; anche la protezione dei pacchetti è nativa, quindi OpenSSL non viene caricato affatto, senza bisogno di alcuna direttiva. Vedere QUIC per il confronto completo dei motori. Seguire i passaggi seguenti per configurare questo componente:

1. Creare una nuova istanza del componente TsgcQUICClient e impostare Host e Port del server QUIC.

2. Gestire l'evento OnQUICConnect, aprire la connessione impostando Active a True e inviare dati con WriteData. esempio:


    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;

Riferimento

Proprietà principali

NomeDescrizione
ActiveApre o chiude la connessione QUIC verso il server remoto.
HostIndirizzo IP o nome DNS del server QUIC a cui si connetterà il client.
PortPorta UDP usata per connettersi al server QUIC.
SSLQUICAbilita il livello sicuro TLS 1.3 richiesto da QUIC (abilitato per impostazione predefinita).
QUICOptionsOpzioni di ottimizzazione lato client per il trasporto QUIC.

Metodi principali

NomeDescrizione
ConnectApre la connessione QUIC al server e attende finché non viene stabilita o scade il timeout.
DisconnectChiude la connessione QUIC al server.
WriteDataInvia dati al server sullo stream QUIC predefinito.
OpenStreamApre un nuovo stream QUIC e lo restituisce in modo da poter inviare dati su di esso.

Eventi principali

NomeDescrizione
OnQUICConnectSi attiva subito dopo che il client si connette con successo al server QUIC.
OnQUICDisconnectSi attiva quando la connessione QUIC è stata chiusa.
OnQUICExceptionSi attiva quando viene generata un'eccezione sulla connessione QUIC.

Esempio completo


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;

Requisiti