3 releases

new 0.1.3 Jul 31, 2020
0.1.2 May 1, 2020
0.1.1 May 1, 2020
0.1.0 Apr 27, 2020

#127 in Network programming

Download history 3/week @ 2020-04-21 46/week @ 2020-04-28 47/week @ 2020-05-05 38/week @ 2020-05-12 13/week @ 2020-05-19 22/week @ 2020-05-26 35/week @ 2020-06-02 54/week @ 2020-06-09 52/week @ 2020-06-16 19/week @ 2020-06-23 37/week @ 2020-06-30 52/week @ 2020-07-07 53/week @ 2020-07-14 39/week @ 2020-07-21 105/week @ 2020-07-28

186 downloads per month

MIT/Apache

62KB
1.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

In Progress

  • Service browsing

Todo

  • How to check for more (select() on socket, but has to be win32 friendly)
  • Record creation
  • Name resolution
  • Port map
  • Tests
  • Documentation
  • Pure Rust TXT code?
  • Interior mutability? (Can we reduce the &mut arguments some?)

Build Requirements

astro-dnssd requires the Bonjour SDK.

  • 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::register::DNSServiceBuilder;
    use astro_dnssd::txt::TXTRecord;
    let mut txt = TXTRecord::new();
    let _ = txt.insert("s", Some("open"));
    let mut service = DNSServiceBuilder::new("_rust._tcp")
        .with_port(2048)
        .with_name("MyRustService")
        .with_txt_record(txt)
        .build()
        .unwrap();
    let _result = service.register(|reply| match reply {
        Ok(reply) => println!("Successful reply: {:?}", reply),
        Err(e) => println!("Error registering: {:?}", e),
    });
    loop {
        service.process_result();
    }

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

~99KB