TsgcQUICClient è un client QUIC di basso livello (RFC 9000) che apre una connessione QUIC a un server e scambia dati tramite stream QUIC.
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;
| Nome | Descrizione |
|---|---|
| Active | Apre o chiude la connessione QUIC verso il server remoto. |
| Host | Indirizzo IP o nome DNS del server QUIC a cui si connetterà il client. |
| Port | Porta UDP usata per connettersi al server QUIC. |
| SSLQUIC | Abilita il livello sicuro TLS 1.3 richiesto da QUIC (abilitato per impostazione predefinita). |
| QUICOptions | Opzioni di ottimizzazione lato client per il trasporto QUIC. |
| Nome | Descrizione |
|---|---|
| Connect | Apre la connessione QUIC al server e attende finché non viene stabilita o scade il timeout. |
| Disconnect | Chiude la connessione QUIC al server. |
| WriteData | Invia dati al server sullo stream QUIC predefinito. |
| OpenStream | Apre un nuovo stream QUIC e lo restituisce in modo da poter inviare dati su di esso. |
| Nome | Descrizione |
|---|---|
| OnQUICConnect | Si attiva subito dopo che il client si connette con successo al server QUIC. |
| OnQUICDisconnect | Si attiva quando la connessione QUIC è stata chiusa. |
| OnQUICException | Si attiva quando viene generata un'eccezione sulla connessione QUIC. |
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;