Add multi threading
This commit is contained in:
parent
fbb976a8e3
commit
ea2131e696
1 changed files with 24 additions and 20 deletions
44
src/main.rs
44
src/main.rs
|
|
@ -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!")
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue