summaryrefslogtreecommitdiffstats
path: root/src/bin/server
diff options
context:
space:
mode:
authorsalmonik <raisersoft@proton.me>2026-02-28 17:35:40 +0100
committersalmonik <raisersoft@proton.me>2026-02-28 17:35:40 +0100
commit28382b249535e964ce983fe5a0821a898a077775 (patch)
tree3b68dd13d9fec27ab3163f09285c718874540c65 /src/bin/server
parentinit version (diff)
downloadzagan-bet-28382b249535e964ce983fe5a0821a898a077775.tar.gz
zagan-bet-28382b249535e964ce983fe5a0821a898a077775.zip
multi file for both sides
Diffstat (limited to '')
-rw-r--r--src/bin/server/args.rs (renamed from src/bin/server.rs)37
-rw-r--r--src/bin/server/handler.rs15
-rw-r--r--src/bin/server/main.rs23
-rw-r--r--src/bin/server/mod.rs2
4 files changed, 46 insertions, 31 deletions
diff --git a/src/bin/server.rs b/src/bin/server/args.rs
index 215d2ae..31c0acc 100644
--- a/src/bin/server.rs
+++ b/src/bin/server/args.rs
@@ -1,24 +1,12 @@
1use std::io::{BufRead, BufReader, Write}; 1pub struct Args {
2use std::net::TcpListener; 2 pub ip: String,
3use std::thread; 3 pub port: u16,
4
5fn handle_client(stream: std::net::TcpStream) {
6 println!("Client connected");
7 let reader_stream = stream.try_clone().unwrap();
8 let reader = BufReader::new(reader_stream);
9 let mut writer = stream;
10 for line in reader.lines() {
11 let line = line.unwrap();
12 println!("Received: {}", line);
13 writeln!(writer, "{}", line).unwrap();
14 }
15 println!("Client disconnected");
16} 4}
17 5
18fn main() { 6pub fn parse_args() -> Args {
19 let args: Vec<String> = std::env::args().collect(); 7 let args: Vec<String> = std::env::args().collect();
20 let mut ip = "127.0.0.1".to_string(); 8 let mut ip = "127.0.0.1".to_string();
21 let mut port = 8080; 9 let mut port = 11525;
22 let mut i = 1; 10 let mut i = 1;
23 while i < args.len() { 11 while i < args.len() {
24 if args[i] == "-p" { 12 if args[i] == "-p" {
@@ -49,18 +37,5 @@ fn main() {
49 std::process::exit(1); 37 std::process::exit(1);
50 } 38 }
51 } 39 }
52 let listener = match TcpListener::bind(format!("{}:{}", ip, port)) { 40 Args { ip, port }
53 Ok(l) => l,
54 Err(e) => {
55 eprintln!("Failed to bind to {}:{}: {}", ip, port, e);
56 std::process::exit(1);
57 }
58 };
59 println!("Server listening on {}", listener.local_addr().unwrap());
60 for stream in listener.incoming() {
61 let stream = stream.unwrap();
62 thread::spawn(move || {
63 handle_client(stream);
64 });
65 }
66} 41}
diff --git a/src/bin/server/handler.rs b/src/bin/server/handler.rs
new file mode 100644
index 0000000..906a91f
--- /dev/null
+++ b/src/bin/server/handler.rs
@@ -0,0 +1,15 @@
1use std::io::{BufRead, BufReader, Write};
2use std::net::TcpStream;
3
4pub fn handle_client(stream: TcpStream) {
5 println!("Client connected");
6 let reader_stream = stream.try_clone().unwrap();
7 let reader = BufReader::new(reader_stream);
8 let mut writer = stream;
9 for line in reader.lines() {
10 let line = line.unwrap();
11 println!("Received: {}", line);
12 writeln!(writer, "{}", line).unwrap();
13 }
14 println!("Client disconnected");
15}
diff --git a/src/bin/server/main.rs b/src/bin/server/main.rs
new file mode 100644
index 0000000..2c6e1dc
--- /dev/null
+++ b/src/bin/server/main.rs
@@ -0,0 +1,23 @@
1mod args;
2mod handler;
3
4use std::net::TcpListener;
5use std::thread;
6
7fn main() {
8 let args = args::parse_args();
9 let listener = match TcpListener::bind(format!("{}:{}", args.ip, args.port)) {
10 Ok(l) => l,
11 Err(e) => {
12 eprintln!("Failed to bind to {}:{}: {}", args.ip, args.port, e);
13 std::process::exit(1);
14 }
15 };
16 println!("Server listening on {}", listener.local_addr().unwrap());
17 for stream in listener.incoming() {
18 let stream = stream.unwrap();
19 thread::spawn(move || {
20 handler::handle_client(stream);
21 });
22 }
23}
diff --git a/src/bin/server/mod.rs b/src/bin/server/mod.rs
new file mode 100644
index 0000000..adb60bb
--- /dev/null
+++ b/src/bin/server/mod.rs
@@ -0,0 +1,2 @@
1pub mod args;
2pub mod handler;