diff --git a/src/main.rs b/src/main.rs index 6d56f56..92b2e43 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,7 +1,7 @@ pub mod cli; use std::{ - io::{self, BufRead, BufReader, Read, Write}, + io::{self, BufRead, BufReader, Write}, net::{TcpListener, TcpStream}, }; @@ -15,7 +15,7 @@ fn main() { println!("Listening on 127.0.0.1:12345"); let listener = TcpListener::bind(args.address).unwrap(); - let (mut stream, addr) = listener.accept().unwrap(); + let (stream, addr) = listener.accept().unwrap(); println!("Connected to {addr}"); stream } else { @@ -24,27 +24,31 @@ fn main() { stream.write_all(b"Whats up?").unwrap(); - let mut reader = BufReader::new(stream.try_clone().unwrap()); + let listener_thread = { + let mut reader = BufReader::new(stream.try_clone().unwrap()); + std::thread::spawn(move || { + loop { + let mut r = String::new(); + reader.read_line(&mut r).unwrap(); + println!("{}", r); + } + }) + }; - let mut stdin = BufReader::new(io::stdin()); + let writer_thread = { + let mut stdin = BufReader::new(io::stdin()); + std::thread::spawn(move || { + loop { + let mut input = String::new(); + stdin.read_line(&mut input).unwrap(); - loop { - print!("> "); - let mut input = String::new(); - stdin.read_line(&mut input).unwrap(); + stream.write_all(input.as_bytes()).unwrap(); + } + }) + }; - stream.write_all(input.as_bytes()).unwrap(); - - let mut s = String::new(); - reader.read_line(&mut s).unwrap(); - println!("Received: {:?}", s); - - if s.is_empty() { - break; - } - - //stream.write_all(s.as_bytes()).unwrap() - } + writer_thread.join().unwrap(); + listener_thread.join().unwrap(); println!("Done!") }