netsim-embed 0.9.1

Network simulator.
Documentation
use anyhow::Result;
use async_trait::async_trait;
use futures::prelude::*;
use netsim_embed_cli::{run_client, Client};
use std::net::{Ipv4Addr, SocketAddrV4, TcpStream};

pub struct TcpClient;

#[async_trait]
impl Client for TcpClient {
    async fn run(&mut self, addr: Ipv4Addr) -> Result<()> {
        let addr = SocketAddrV4::new(addr, 3000);
        let mut stream = async_io::Async::<TcpStream>::connect(addr).await?;
        stream.write_all(b"ping").await?;
        let mut buf = [0u8; 11];
        let len = stream.read(&mut buf).await?;
        assert_eq!(&buf[..len], &b"pong"[..]);
        println!("received pong");
        Ok(())
    }
}

#[async_std::main]
async fn main() -> Result<()> {
    run_client(TcpClient).await
}