use embedded_nal::nb::block;
use embedded_nal::{Dns, TcpClient};
fn run<S, E>(stack: &S) -> Result<(), E>
where
E: core::fmt::Debug, S: TcpClient<Error = E> + Dns<Error = E>,
{
let target = embedded_nal::SocketAddr::new(
stack.gethostbyname("localhost", embedded_nal::AddrType::IPv6)?,
80,
);
let mut sock = stack.socket()?;
block!(stack.connect(&mut sock, target))?;
block!(stack.send(&mut sock, b"GET / HTTP/1.0\r\nHostname: localhost\r\n\r\n"))?;
let mut respbuf = [0; 1500];
let resplen = block!(stack.receive(&mut sock, &mut respbuf))?;
let response = &respbuf[..resplen];
println!("Response: {}", String::from_utf8_lossy(response));
Ok(())
}
fn main() {
let stack = &std_embedded_nal::STACK;
run(stack).expect("Error running the main program")
}