chore: reorg
This commit is contained in:
39
__network/tcp/tcp_server/src/main.rs
Normal file
39
__network/tcp/tcp_server/src/main.rs
Normal file
@@ -0,0 +1,39 @@
|
||||
use std::thread;
|
||||
use std::net::{ TcpListener, TcpStream, Shutdown };
|
||||
use std::io::{ Read, Write };
|
||||
|
||||
fn handle_client(mut stream: TcpStream) {
|
||||
let mut data = [0_u8; 50]; // using 50 byte buffer
|
||||
while match stream.read(&mut data) {
|
||||
Ok(size) => {
|
||||
// echo everything!
|
||||
stream.write(&data[0..size]).unwrap();
|
||||
true
|
||||
},
|
||||
Err(_) => {
|
||||
println!("An error occurred, terminating connection with {}", stream.peer_addr().unwrap());
|
||||
stream.shutdown(Shutdown::Both).unwrap();
|
||||
false
|
||||
},
|
||||
} {}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let listener = TcpListener::bind("0.0.0.0:3333").unwrap();
|
||||
// accept connections and process them, spawning a new thread for each one
|
||||
println!("Server listening on port 3333");
|
||||
for stream in listener.incoming() {
|
||||
match stream {
|
||||
Ok(stream) => {
|
||||
println!("New connection: {}", stream.peer_addr().unwrap());
|
||||
thread::spawn(move|| {
|
||||
// connection succeeded
|
||||
handle_client(stream)
|
||||
});
|
||||
},
|
||||
Err(e) => println!("Error: {}", e),
|
||||
}
|
||||
}
|
||||
// close the socket server
|
||||
drop(listener);
|
||||
}
|
||||
Reference in New Issue
Block a user