34 lines
1.2 KiB
Rust
34 lines
1.2 KiB
Rust
//! NetDesk LAN scan — discover NetDesk hosts on the local network by UDP
|
|
//! broadcast (the viewer end of the host's discovery responder). Prints each
|
|
//! host's id + name so you can connect by id. Developed by Akronlogic.
|
|
//!
|
|
//! Usage: netdesk-lan-scan [timeout_ms] (default 800ms)
|
|
|
|
use netdesk_core::lan;
|
|
use std::time::Duration;
|
|
|
|
fn main() {
|
|
let ms: u64 = std::env::args()
|
|
.nth(1)
|
|
.and_then(|s| s.parse().ok())
|
|
.unwrap_or(800);
|
|
eprintln!("[lan] scanning for NetDesk hosts on udp/{} for {ms}ms…", lan::LAN_PORT);
|
|
match lan::scan(&lan::broadcast_targets(), Duration::from_millis(ms)) {
|
|
Ok(hosts) if hosts.is_empty() => {
|
|
println!("no NetDesk hosts found on this LAN");
|
|
}
|
|
Ok(hosts) => {
|
|
println!("found {} host(s):", hosts.len());
|
|
for h in hosts {
|
|
// addr.port() is 0 until direct-IP connect ships; the id is what
|
|
// a viewer uses to connect through the relay today.
|
|
println!(" id={} name=\"{}\" ip={}", h.id, h.name, h.addr.ip());
|
|
}
|
|
}
|
|
Err(e) => {
|
|
eprintln!("[lan] scan failed: {e}");
|
|
std::process::exit(1);
|
|
}
|
|
}
|
|
}
|