8 releases
0.3.4 | Mar 28, 2024 |
---|---|
0.3.2 | Oct 10, 2022 |
0.3.1 | Sep 15, 2022 |
0.3.0 | Aug 6, 2021 |
0.1.0 | Apr 27, 2020 |
#181 in Network programming
841 downloads per month
Used in rs-matter
205KB
6K
SLoC
Astro DNS-SD
Minimal but friendly safe wrapper around dns-sd(Bonjour, mDNS, Zeroconf DNS) APIs.
Features
Complete
- Service registration
- TXTRecord support for service registration via HashMap
- Service browsing
Todo
- Record creation
- Name resolution
- Port map
- Tests
- Documentation
Build Requirements
astro-dnssd
requires the Bonjour SDK (as of 0.3 on windows, it's optional, see win-bonjour feature flag)
- Windows: Download the SDK here
- Linux: Install
avahi-compat-libdns_sd
for your distro of choice.
Technical Background
This website provides a good overview of the DNS-SD protocol.
Example
use astro_dnssd::DNSServiceBuilder;
use env_logger::Env;
use std::thread::sleep;
use std::time::Duration;
fn main() {
env_logger::from_env(Env::default().default_filter_or("trace")).init();
println!("Registering service...");
let service = DNSServiceBuilder::new("_http._tcp", 8080)
.with_key_value("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
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
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.
Dependencies
~0.3–1.1MB
~22K SLoC