Skip to main content

Crate mdns_sd_discovery

Crate mdns_sd_discovery 

Source
Expand description

Access the operating system’s built-in DNS-SD / mDNS stack for service discovery.

This crate provides a cross-platform async API (using Tokio) for browsing DNS-SD services via the native OS facilities:

  • macOS: native DNS-SD framework (available since macOS 10.12)
  • Windows: native Win32 DNS-SD API (available since Windows 10)
  • Linux/FreeBSD: Avahi via D-Bus (no binary dependency on libavahi)

Service registration lives in a separate crate.

§Discovery

By default a ServiceBrowser discovers every service type on the network. Filter on DiscoveredService::service_type, or narrow to a single type with ServiceBrowserBuilder::service_type.

use mdns_sd_discovery::{BrowseEvent, ServiceBrowserBuilder};

let mut browser = ServiceBrowserBuilder::new().browse().await?;

while let Some(event) = browser.recv().await {
    match event? {
        BrowseEvent::Found(svc) => {
            println!("+ [{}] {} at {}:{}", svc.service_type, svc.name, svc.host_name, svc.port);
        }
        BrowseEvent::Removed(svc) => println!("- [{}] {}", svc.service_type, svc.name),
    }
}
// Dropping `browser` stops the browse.

Structs§

DiscoveredService
A resolved, connectable service instance.
RemovedService
Identity of a service instance that disappeared.
ServiceBrowser
A live handle to an ongoing browse operation.
ServiceBrowserBuilder
Builder for a DNS-SD service browse (discovery) operation.
ServiceResolverBuilder
Builder for a one-shot DNS-SD resolve of a single, already-known service instance.
TxtRecord
A single TXT record key/value entry.

Enums§

BrowseEvent
A single change in the set of discovered services.
ServiceBrowseError
Error type for service browse / discovery failures.