#![warn(rust_2018_idioms)] #![cfg(all(feature = "full", not(target_os = "wasi"), not(miri)))] // Wasi doesn't support mulithreading // No `socket` on miri.
use tokio::io::{self, AsyncReadExt, AsyncWriteExt}; use tokio::net::{TcpListener, TcpStream}; use tokio::sync::oneshot::channel; use tokio_test::assert_ok;
#[tokio::test] async fn shutdown() { let srv = assert_ok!(TcpListener::bind("127.0.0.1:0").await); let addr = assert_ok!(srv.local_addr());
let handle = tokio::spawn(asyncmove { letmut stream = assert_ok!(TcpStream::connect(&addr).await);
let (stream, _) = assert_ok!(srv.accept().await); // By setting linger to 0 we will trigger a TCP reset
stream.set_zero_linger().unwrap();
connected_rx.await.unwrap();
drop(stream);
dropped_tx.send(()).unwrap();
handle.await.unwrap();
}
#[tokio::test] async fn shutdown_multiple_calls() { let srv = assert_ok!(TcpListener::bind("127.0.0.1:0").await); let addr = assert_ok!(srv.local_addr());
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.