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 listener_thread = {
let mut reader = BufReader::new(stream.try_clone().unwrap()); let mut reader = BufReader::new(stream.try_clone().unwrap());
std::thread::spawn(move || {
let mut stdin = BufReader::new(io::stdin()); loop {
let mut r = String::new();
reader.read_line(&mut r).unwrap();
println!("{}", r);
}
})
};
let writer_thread = {
let mut stdin = BufReader::new(io::stdin());
std::thread::spawn(move || {
loop { loop {
print!("> ");
let mut input = String::new(); let mut input = String::new();
stdin.read_line(&mut input).unwrap(); 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!") println!("Done!")
} }