use core::net::{IpAddr, Ipv4Addr, SocketAddr}; use embedded_io_async::{Read, Write}; use edge_nal::TcpConnect; use log::*; fn main() { env_logger::init_from_env( env_logger::Env::default().filter_or(env_logger::DEFAULT_FILTER_ENV, "info"), ); let stack = edge_nal_std::Stack::new(); futures_lite::future::block_on(read(&stack)).unwrap(); } async fn read(stack: &T) -> Result<(), T::Error> { info!("About to open a TCP connection to 1.1.1.1 port 80"); let mut connection = stack .connect(SocketAddr::new(IpAddr::V4(Ipv4Addr::new(1, 1, 1, 1)), 80)) .await?; connection.write_all(b"GET / HTTP/1.0\n\n").await?; let mut result = Vec::new(); let mut buf = [0_u8; 1024]; loop { let len = connection.read(&mut buf).await?; if len > 0 { result.extend_from_slice(&buf[0..len]); } else { break; } } info!( "1.1.1.1 returned:\n=================\n{}\n=================\nSince it returned something, all seems OK!", core::str::from_utf8(&result).unwrap()); Ok(()) }