feat: update quinn
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
use std::{error::Error, net::SocketAddr};
|
||||
use std::sync::Arc;
|
||||
use std::time::Duration;
|
||||
|
||||
use futures_util::stream::StreamExt;
|
||||
use quinn::{ClientConfig, Endpoint, Incoming, ServerConfig};
|
||||
use tokio::time::sleep;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> Result<(), Box<dyn Error>> {
|
||||
@@ -36,11 +38,25 @@ fn run_server(addr: SocketAddr) -> Result<Vec<u8>, Box<dyn Error>> {
|
||||
let (mut incoming, server_cert) = make_server_endpoint(addr)?;
|
||||
// accept a single connection
|
||||
tokio::spawn(async move {
|
||||
let quinn::NewConnection { connection, .. } = incoming.next().await.unwrap().await.unwrap();
|
||||
let quinn::NewConnection {
|
||||
connection,
|
||||
mut bi_streams,
|
||||
..
|
||||
} = incoming.next().await.unwrap().await.unwrap();
|
||||
println!(
|
||||
"[server] incoming connection: addr={}",
|
||||
connection.remote_address()
|
||||
);
|
||||
while let Some(Ok((_send, mut recv))) = bi_streams.next().await {
|
||||
let mut buff = [0_u8; 32];
|
||||
match recv.read(&mut buff).await {
|
||||
Ok(None) => { break; }
|
||||
Ok(Some(n)) => {
|
||||
println!("Received: {:x?}", &buff[..n]);
|
||||
}
|
||||
Err(e) => { println!("Error: {:?}", e); }
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Ok(server_cert)
|
||||
@@ -51,6 +67,9 @@ async fn run_client(endpoint: &Endpoint, server_addr: SocketAddr) {
|
||||
let connect = endpoint.connect(server_addr, "localhost").unwrap();
|
||||
let quinn::NewConnection { connection, .. } = connect.await.unwrap();
|
||||
println!("[client] connected: addr={}", connection.remote_address());
|
||||
let (mut send, _recv) = connection.open_bi().await.unwrap();
|
||||
send.write_all(b"hello world").await.unwrap();
|
||||
sleep(Duration::from_millis(500)).await;
|
||||
}
|
||||
|
||||
pub fn make_client_endpoint(
|
||||
|
||||
Reference in New Issue
Block a user