Function rosc::decoder::decode_udp
source · pub fn decode_udp(msg: &[u8]) -> Result<(&[u8], OscPacket), OscError>
Expand description
Takes a bytes slice representing a UDP packet and returns the OSC packet as well as a slice of any bytes remaining after the OSC packet.
Examples found in repository?
examples/receiver.rs (line 28)
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
fn main() {
let args: Vec<String> = env::args().collect();
let usage = format!("Usage {} IP:PORT", &args[0]);
if args.len() < 2 {
println!("{}", usage);
::std::process::exit(1)
}
let addr = match SocketAddrV4::from_str(&args[1]) {
Ok(addr) => addr,
Err(_) => panic!("{}", usage),
};
let sock = UdpSocket::bind(addr).unwrap();
println!("Listening to {}", addr);
let mut buf = [0u8; rosc::decoder::MTU];
loop {
match sock.recv_from(&mut buf) {
Ok((size, addr)) => {
println!("Received packet with size {} from: {}", size, addr);
let (_, packet) = rosc::decoder::decode_udp(&buf[..size]).unwrap();
handle_packet(packet);
}
Err(e) => {
println!("Error receiving from socket: {}", e);
break;
}
}
}
}