Astro DNS-SD

Build Status License Cargo Documentation

Minimal but friendly safe wrapper around dns-sd(Bonjour, mDNS, Zeroconf DNS) APIs.

Documentation

Features

Complete

Todo

Build Requirements

astro-dnssd requires the Bonjour SDK (as of 0.3 on windows, it's optional, see win-bonjour feature flag)

Technical Background

This website provides a good overview of the DNS-SD protocol.

Example

```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));

}

```

License

Licensed under either of

at your option.

Contribution

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.