pub struct QuicClient { /* private fields */ }
Expand description
A QUIC client for initiating connections to servers.
§Creating Clients
Use QuicClient::builder
to configure and create a client instance.
Configure interfaces, TLS settings, and connection behavior before building.
§Interface Management
- Automatic binding: If no interfaces are bound, the client automatically binds to system-assigned addresses
- Manual binding: Use
QuicClientBuilder::bind
to bind specific interfaces
§Connection Handling
Call QuicClient::connect
to establish connections. The client supports:
- Automatic interface selection: Matches interface with server endpoint address
Implementations§
Source§impl QuicClient
impl QuicClient
Sourcepub fn builder() -> QuicClientBuilder<ConfigBuilder<TlsClientConfig, WantsVerifier>>
pub fn builder() -> QuicClientBuilder<ConfigBuilder<TlsClientConfig, WantsVerifier>>
Create a new QuicClient
builder.
Sourcepub fn builder_with_crypto_provieder(
provider: Arc<CryptoProvider>,
) -> QuicClientBuilder<ConfigBuilder<TlsClientConfig, WantsVerifier>>
pub fn builder_with_crypto_provieder( provider: Arc<CryptoProvider>, ) -> QuicClientBuilder<ConfigBuilder<TlsClientConfig, WantsVerifier>>
Create a QuicClient
builder with custom crypto provider.
Sourcepub fn builder_with_tls<T>(tls_config: T) -> QuicClientBuilder<T>
pub fn builder_with_tls<T>(tls_config: T) -> QuicClientBuilder<T>
Start to build a QuicClient with the given TLS configuration.
This is useful when you want to customize the TLS configuration, or integrate qm-quic with other crates.
Source§impl QuicClient
impl QuicClient
Sourcepub fn connect(
&self,
server_name: impl Into<String>,
server_eps: impl IntoIterator<Item = impl Into<EndpointAddr>>,
) -> Result<Arc<Connection>, ConnectServerError>
pub fn connect( &self, server_name: impl Into<String>, server_eps: impl IntoIterator<Item = impl Into<EndpointAddr>>, ) -> Result<Arc<Connection>, ConnectServerError>
Returns the connection to the specified server.
server_name
is the name of the server, it will be included in the ClientHello
message.
server_addr
is the address of the server, packets will be sent to this address.
Note that the returned connection may not yet be connected to the server, but you can use it to do anything you want, such as sending data, receiving data… operations will be pending until the connection is connected or failed to connect.
§Select an interface
First, the client will select an interface to communicate with the server.
If the client has already bound a set of addresses, The client will select the interface whose IP family of the first address matches the server addr from the bound and not closed interfaces.
§Connect to server
If the client does not bind any interface, the client will bind the interface on the address/port randomly assigned
by the system through quic_iface_factory
every time it establishes a connection.
The client will initiate a new connection to the server.