Crate simpdiscoverylib

source ·
Expand description

simpdiscovery library crate for simple UDP datagram-based discovery of services on a LAN

Example combining a BeaconSender and a BeaconListener

use simpdiscoverylib::{BeaconSender, BeaconListener};
use std::time::Duration;
use portpicker::pick_unused_port;

let service_port = pick_unused_port().expect("Could not get a free port");
let broadcast_port = pick_unused_port().expect("Could not get a free port");
let my_service_name = "_my_service._tcp.local".as_bytes();
let beacon = BeaconSender::new(service_port, my_service_name, broadcast_port)
    .expect("Could not create sender");
std::thread::spawn(move || {
    beacon.send_loop(Duration::from_secs(1)).expect("Could not run send_loop")

let listener = BeaconListener::new(my_service_name, broadcast_port)
    .expect("Could not create listener");
let beacon = listener.wait(None).expect("Failed to receive beacon");
assert_eq!(beacon.service_name, my_service_name, "Received service name doesn't match");
assert_eq!(beacon.service_port, service_port, "Received service port doesn't match");


Beacon contains information about the beacon that was received by a BeaconListener
BeaconListener listens for new Beacons on the specified port
BeaconSender is used to send UDP Datagram beacons to the Broadcast IP address on the LAN