Add multi threading

This commit is contained in:
Mona Mayrhofer 2025-04-13 13:06:13 +02:00
parent fbb976a8e3
commit ea2131e696
No known key found for this signature in database
GPG key ID: 5C83114FA383C6A0

View file

@ -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!")
}