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);
Re-exports§
pub use self::endpoint::Receiver;
pub use self::endpoint::Sender;
pub use self::unix::UnixDatagram;
pub use self::unix::UnixListener;
pub use self::unix::UnixStream;
Modules§
- IP Virtual Server.
- rpc
rpc
RPC support. - a tokio Tcp Simulatior
Structs§
- Network configurations.
- An endpoint.
- NetSim
madsim
Network simulator. - Network statistics.
- A TCP socket server, listening for connections.
- A TCP stream between a local and a remote socket.
- A UDP socket.
Traits§
- Converts or resolves without blocking to one or more
SocketAddr
values.
Functions§
- Performs a DNS resolution.
Type Aliases§
- Message sent to a network socket.