From 729f1de785841ca49f1e2549fb694aad17fcc61f Mon Sep 17 00:00:00 2001 From: "Namularbre (Thomas Sazerat)" <81816911+Namularbre@users.noreply.github.com> Date: Mon, 13 Nov 2023 16:59:51 +0100 Subject: [PATCH] Now the code is cleaner, and we can configure the server a bit --- .gitignore | 1 + .idea/.gitignore | 8 ++++++++ .idea/modules.xml | 8 ++++++++ .idea/socket_server.iml | 11 +++++++++++ .idea/vcs.xml | 6 ++++++ Cargo.lock | 7 +++++++ Cargo.toml | 8 ++++++++ src/main.rs | 31 +++++++++++++++++++++++++++++++ 8 files changed, 80 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/modules.xml create mode 100644 .idea/socket_server.iml create mode 100644 .idea/vcs.xml create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 src/main.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..7d1bb64 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/socket_server.iml b/.idea/socket_server.iml new file mode 100644 index 0000000..cf84ae4 --- /dev/null +++ b/.idea/socket_server.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..ccf1ef0 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "socket_server" +version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..128cf2d --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "socket_server" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..329cd8f --- /dev/null +++ b/src/main.rs @@ -0,0 +1,31 @@ +use std::net::UdpSocket; +use std::io::stdin; + +fn main() { + let server_address: String = get_server_address(); + listen(server_address); +} + +fn get_server_address() -> String { + println!("Enter server address (format xxx.xxx.xxx.xxx:port)"); + let mut server_address = String::new(); + stdin().read_line(&mut server_address).expect("Reading the server address from input"); + server_address = String::from(server_address.trim()); + return server_address; +} + +fn listen(server_address: String) { + println!("listening on {}", server_address); + loop { + let mut message: String = String::new(); + let mut buf: [u8; 1024] = [0; 1024]; + let socket: UdpSocket = UdpSocket::bind(server_address.clone()).expect("Error while binding the socket."); + let (num_bytes, src_addr) = socket.recv_from(&mut buf).expect("Error while receiving message"); + message.push_str(std::str::from_utf8(&buf[..num_bytes]).expect("Invalid UTF-8 data")); + println!("{}:{}", src_addr.to_string(), message); + + if message.trim() == "!STOP" { + return; + } + } +} \ No newline at end of file