Add multi threading
This commit is contained in:
parent
fbb976a8e3
commit
ea2131e696
1 changed files with 24 additions and 20 deletions
34
src/main.rs
34
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 listener_thread = {
|
||||
let mut reader = BufReader::new(stream.try_clone().unwrap());
|
||||
|
||||
let mut stdin = BufReader::new(io::stdin());
|
||||
|
||||
std::thread::spawn(move || {
|
||||
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 {
|
||||
print!("> ");
|
||||
let mut input = String::new();
|
||||
stdin.read_line(&mut input).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!")
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue