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; pub mod cli;
use std::{ use std::{
io::{self, BufRead, BufReader, Read, Write}, io::{self, BufRead, BufReader, Write},
net::{TcpListener, TcpStream}, net::{TcpListener, TcpStream},
}; };
@ -15,7 +15,7 @@ fn main() {
println!("Listening on 127.0.0.1:12345"); println!("Listening on 127.0.0.1:12345");
let listener = TcpListener::bind(args.address).unwrap(); let listener = TcpListener::bind(args.address).unwrap();
let (mut stream, addr) = listener.accept().unwrap(); let (stream, addr) = listener.accept().unwrap();
println!("Connected to {addr}"); println!("Connected to {addr}");
stream stream
} else { } else {
@ -24,27 +24,31 @@ fn main() {
stream.write_all(b"Whats up?").unwrap(); 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 { stream.write_all(input.as_bytes()).unwrap();
print!("> "); }
let mut input = String::new(); })
stdin.read_line(&mut input).unwrap(); };
stream.write_all(input.as_bytes()).unwrap(); writer_thread.join().unwrap();
listener_thread.join().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()
}
println!("Done!") println!("Done!")
} }