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