Thanks to visit codestin.com
Credit goes to lib.rs

10 releases

0.3.6 Jun 16, 2025
0.3.5 Jan 27, 2025
0.3.4 Mar 28, 2024
0.3.2 Oct 10, 2022
0.1.3 Jul 31, 2020

#306 in Network programming

Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App

412 downloads per month
Used in rs-matter

MIT/Apache

125KB
3.5K SLoC

Astro DNS-SD

Build Status License Cargo Documentation

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

Documentation

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

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.2–1MB
~18K SLoC