From ff31af2bdc9ba0d63a863b6f052e67168ac415f5 Mon Sep 17 00:00:00 2001 From: Silvio Braendle Date: Mon, 27 Jan 2025 11:28:36 +0100 Subject: [PATCH] Retry with different port --- src/client_handler.rs | 19 +++++++++++++++++-- src/dispatcher.rs | 2 +- src/main.rs | 16 +++++++++++++++- 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/src/client_handler.rs b/src/client_handler.rs index 15695b9..2944eca 100644 --- a/src/client_handler.rs +++ b/src/client_handler.rs @@ -2,6 +2,12 @@ use crate::protocol::Message; use crate::sound_scheduler::SoundScheduler; use std::net::UdpSocket; +pub struct BindError { + pub message: String, +} + +type Result = std::result::Result; + pub struct ClientHandler; impl ClientHandler { @@ -13,8 +19,17 @@ impl ClientHandler { } } - pub fn listen() { - let socket = UdpSocket::bind("0.0.0.0:3000").expect("Could not bind to address"); + pub fn listen(port: u16) -> Result<()> { + let bind_addr = format!("0.0.0.0:{}", port); + let socket = UdpSocket::bind(bind_addr); + let socket = match socket { + Ok(s) => s, + Err(e) => { + return Err(BindError { + message: e.to_string(), + }); + } + }; println!("Listening on {}", socket.local_addr().unwrap()); diff --git a/src/dispatcher.rs b/src/dispatcher.rs index 976fd37..02607aa 100644 --- a/src/dispatcher.rs +++ b/src/dispatcher.rs @@ -1,5 +1,5 @@ use std::fs::File; -use std::io::{BufReader, Read}; +use std::io::BufReader; use std::net::UdpSocket; use std::thread; use std::time::{Duration, SystemTime}; diff --git a/src/main.rs b/src/main.rs index 7f6625e..a5566a5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -20,7 +20,21 @@ fn main() -> eframe::Result { }; thread::spawn(move || { - ClientHandler::listen(); + let result = ClientHandler::listen(3000); + match result { + Ok(_) => {} + Err(e) => { + eprintln!("Failed to bind: {}", e.message); + // Try with port 3001 + let result = ClientHandler::listen(3001); + match result { + Ok(_) => {} + Err(e) => { + eprintln!("Failed to bind again: {}", e.message); + } + } + } + } }); eframe::run_native(