searchlight 0.3.2

📡 Rust mDNS server & client library designed with user interfaces in mind
Documentation
use searchlight::{
	broadcast::{BroadcasterBuilder, ServiceBuilder},
	discovery::{DiscoveryBuilder, DiscoveryEvent},
	net::IpVersion,
};
use std::{
	net::{IpAddr, Ipv4Addr},
	str::FromStr,
};

fn main() {
	let (found_tx, found_rx) = std::sync::mpsc::sync_channel(0);

	let broadcaster = BroadcasterBuilder::new()
		.loopback()
		.add_service(
			ServiceBuilder::new("_searchlight._udp.local.", "HELLO-WORLD", 1234)
				.unwrap()
				.add_ip_address(IpAddr::V4(Ipv4Addr::from_str("192.168.1.69").unwrap()))
				.add_txt_truncated("key=value")
				.add_txt_truncated("key2=value2")
				.build()
				.unwrap(),
		)
		.build(IpVersion::V4)
		.unwrap()
		.run_in_background();

	let discovery = DiscoveryBuilder::new()
		.loopback()
		.service("_searchlight._udp.local.")
		.unwrap()
		.build(IpVersion::V4)
		.unwrap()
		.run_in_background(move |event| {
			if let DiscoveryEvent::ResponderFound(responder) = event {
				found_tx.try_send(responder).ok();
			}
		});

	println!("Waiting for discovery to find responder...");

	println!("{:#?}", found_rx.recv().unwrap());

	println!("Shutting down...");

	broadcaster.shutdown().unwrap();
	discovery.shutdown().unwrap();

	println!("Done!");
}