Expand description
Asynchronous network endpoint and a controlled network simulator.
Examples
use madsim::{runtime::Runtime, net::Endpoint};
use std::sync::Arc;
use std::net::SocketAddr;
let runtime = Runtime::new();
let addr1 = "10.0.0.1:1".parse::<SocketAddr>().unwrap();
let addr2 = "10.0.0.2:1".parse::<SocketAddr>().unwrap();
let node1 = runtime.create_node().ip(addr1.ip()).build();
let node2 = runtime.create_node().ip(addr2.ip()).build();
let barrier = Arc::new(tokio::sync::Barrier::new(2));
let barrier_ = barrier.clone();
node1.spawn(async move {
let net = Endpoint::bind(addr1).await.unwrap();
barrier_.wait().await; // make sure addr2 has bound
net.send_to(addr2, 1, &[1]).await.unwrap();
});
let f = node2.spawn(async move {
let net = Endpoint::bind(addr2).await.unwrap();
barrier.wait().await;
let mut buf = vec![0; 0x10];
let (len, from) = net.recv_from(1, &mut buf).await.unwrap();
assert_eq!(from, addr1);
assert_eq!(&buf[..len], &[1]);
});
runtime.block_on(f);
Modules
Structs
Config
madsim
Network configurations.
An endpoint.
NetSim
madsim
Network simulator.
Stat
madsim
Network statistics.
TcpListener
madsim
A TCP socket server, listening for connections.
A TCP stream between a local and a remote socket.
Traits
Converts or resolves without blocking to one or more SocketAddr
values.
Functions
Performs a DNS resolution.