feat: update quinn

This commit is contained in:
2022-08-25 01:35:27 +08:00
parent 60eb54ca49
commit 5d1372905f

View File

@@ -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(