use std::io::{Read, Write};
use std::net::SocketAddr;
use std::str::from_utf8;
use wasmedge_wasi_socket::{TcpListener, TcpStream};
fn handle_client((mut stream, addr): (TcpStream, SocketAddr)) -> std::io::Result<()> {
let local_addr = stream.local_addr()?;
println!("{} <-> {}", addr.to_string(), local_addr);
loop {
let mut buffer = [0; 1024];
stream.read(&mut buffer)?;
let line = from_utf8(&buffer).unwrap();
print!("get message: {}", line);
println!("sendback reversed message...");
stream.write(&line.as_bytes())?;
}
}
fn main() -> std::io::Result<()> {
let port = std::env::var("PORT").unwrap_or("1234".to_string());
println!("listening at 127.0.0.1:{}", port);
let listener = match TcpListener::bind(format!("127.0.0.1:{}", port), false) {
Ok(ln) => ln,
Err(e) => return Err(e),
};
loop {
handle_client(listener.accept(false).unwrap())?;
}
}