Minimal but friendly safe wrapper around dns-sd(Bonjour, mDNS, Zeroconf DNS) APIs.
astro-dnssd
requires the Bonjour SDK (as of 0.3 on windows, it's optional, see win-bonjour feature flag)
avahi-compat-libdns_sd
for your distro of choice.This website provides a good overview of the DNS-SD protocol.
```rust use astrodnssd::DNSServiceBuilder; use envlogger::Env; use std::thread::sleep; use std::time::Duration;
fn main() { envlogger::fromenv(Env::default().defaultfilteror("trace")).init(); println!("Registering service..."); let service = DNSServiceBuilder::new("http.tcp", 8080) .withkeyvalue("status".into(), "open".into()) .register();
{
match service {
Ok(service) => {
println!("Registered... waiting 20s");
sleep(Duration::from_secs(20));
println!("Dropping... {:?}", service);
}
Err(e) => {
println!("Error registering: {:?}", e);
}
}
}
log::info!("Drop should have happened");
sleep(Duration::from_secs(5));
}
```
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.