33 lines
984 B
Rust
33 lines
984 B
Rust
use std::net::SocketAddrV4;
|
|
|
|
use roowho2_lib::proto::Whod;
|
|
|
|
const RWHOD_BROADCAST_PORT: u16 = 513;
|
|
|
|
#[tokio::main]
|
|
async fn main() -> anyhow::Result<()> {
|
|
let addr = SocketAddrV4::new(std::net::Ipv4Addr::UNSPECIFIED, RWHOD_BROADCAST_PORT);
|
|
let socket = tokio::net::UdpSocket::bind(addr).await?;
|
|
socket.set_broadcast(true)?;
|
|
|
|
let mut buf = [0u8; Whod::MAX_SIZE];
|
|
loop {
|
|
let (len, src) = socket.recv_from(&mut buf).await?;
|
|
if len < Whod::HEADER_SIZE {
|
|
eprintln!(
|
|
"Received too short packet from {src}: {len} bytes (needs to be at least {} bytes)",
|
|
Whod::HEADER_SIZE
|
|
);
|
|
continue;
|
|
}
|
|
match Whod::from_bytes(&buf[..len]) {
|
|
Ok(whod) => {
|
|
println!("Received whod packet from {src}:\n{whod:#?}");
|
|
}
|
|
Err(err) => {
|
|
eprintln!("Failed to parse whod packet from {src}: {err}");
|
|
}
|
|
}
|
|
}
|
|
}
|