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§
- Discovered
Service - A resolved, connectable service instance.
- Removed
Service - Identity of a service instance that disappeared.
- Service
Browser - A live handle to an ongoing browse operation.
- Service
Browser Builder - Builder for a DNS-SD service browse (discovery) operation.
- Service
Resolver Builder - Builder for a one-shot DNS-SD resolve of a single, already-known service instance.
- TxtRecord
- A single TXT record key/value entry.
Enums§
- Browse
Event - A single change in the set of discovered services.
- Service
Browse Error - Error type for service browse / discovery failures.