X-Git-Url: http://git.scottworley.com/tattlekey/blobdiff_plain/891f78b762fa77f19899024d6d9977cf6e635467..50435977481a94712de2c37793eed369f1fe4431:/server/src/main.rs?ds=inline diff --git a/server/src/main.rs b/server/src/main.rs index e7a11a9..0d4377a 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -1,3 +1,37 @@ +// tattlekey: A one-key UDP keyboard +// Copyright (C) 2023 Scott Worley +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +use std::net::UdpSocket; + +const MESSAGE_SIZE: usize = 12; + fn main() { - println!("Hello, world!"); + let socket = UdpSocket::bind("0.0.0.0:29803").expect("couldn't bind to address"); + loop { + let mut buf = [0; MESSAGE_SIZE]; + match socket.recv_from(&mut buf) { + Err(e) => eprintln!("Didn't receive data: {e}"), + Ok((number_of_bytes, src_addr)) => { + let filled_buf = &mut buf[..number_of_bytes]; + if number_of_bytes != MESSAGE_SIZE { + eprintln!("Ignoring short message ({number_of_bytes}) from {src_addr}"); + continue; + } + println!("Got packet from {src_addr}: {filled_buf:?}"); + } + } + } }