stuff
This commit is contained in:
7
server/Cargo.toml
Normal file
7
server/Cargo.toml
Normal file
@@ -0,0 +1,7 @@
|
||||
[package]
|
||||
name = "daggmask-server"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
45
server/src/main.rs
Normal file
45
server/src/main.rs
Normal file
@@ -0,0 +1,45 @@
|
||||
use std::net::UdpSocket;
|
||||
|
||||
fn main() -> std::io::Result<()> {
|
||||
// replace xxxx with your desired port
|
||||
// replace S.S.S.S with your server address
|
||||
let socket = UdpSocket::bind("S.S.S.S:xxxx")?;
|
||||
let mut peers: Vec<String> = vec![];
|
||||
|
||||
loop {
|
||||
let mut buf = [0; 1024];
|
||||
let (_, src) = socket.recv_from(&mut buf)?;
|
||||
let stringified_buff = String::from_utf8(buf.to_vec()).unwrap();
|
||||
let stringified_buff = stringified_buff.trim_matches(char::from(0));
|
||||
|
||||
println!("[NEW MESSAGE]{:?} => {:?}", src, stringified_buff);
|
||||
|
||||
if stringified_buff != "register" {
|
||||
continue;
|
||||
}
|
||||
|
||||
if !peers.contains(&format!("{}", src)) {
|
||||
peers.push(format!("{}", src));
|
||||
}
|
||||
|
||||
for p in &peers {
|
||||
let filtered_peers = filter_peers(&peers, p);
|
||||
|
||||
if !filtered_peers.is_empty() {
|
||||
socket.send_to(filtered_peers.join(",").as_bytes(), p)?;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn filter_peers(peers: &Vec<String>, filter: &String) -> Vec<String> {
|
||||
let mut new_peers: Vec<String> = vec![];
|
||||
|
||||
for p in peers {
|
||||
if p != filter {
|
||||
new_peers.push(String::from(p));
|
||||
}
|
||||
}
|
||||
|
||||
new_peers
|
||||
}
|
Reference in New Issue
Block a user