Crate mdns[−][src]
Multicast DNS library with built-in networking.
This crate can be used to discover mDNS devices that are listening on a network.
Basic usage
This example finds all Chromecast devices on the same LAN as the executing computer.
Once the devices are discovered, they respond with standard DNS records, with a few minor low-level protocol differences.
The only Chromecast-specific piece of code here is the SERVICE_NAME
. In order to discover
other types of devices, simply change the service name to the one your device uses.
This example obtains the IP addresses of the cast devices by looking up A
/AAAA
records.
extern crate mdns; use mdns::{Record, RecordKind}; use std::net::IpAddr; /// The hostname of the devices we are searching for. /// Every Chromecast will respond to the service name in this example. const SERVICE_NAME: &'static str = "_googlecast._tcp.local"; fn main() { // Iterate through responses from each Cast device. for response in mdns::discover::all(SERVICE_NAME).unwrap() { let response = response.unwrap(); let addr = response.records() .filter_map(self::to_ip_addr) .next(); if let Some(addr) = addr { println!("found cast device at {}", addr); } else { println!("cast device does not advertise address"); } } } fn to_ip_addr(record: &Record) -> Option<IpAddr> { match record.kind { RecordKind::A(addr) => Some(addr.into()), RecordKind::AAAA(addr) => Some(addr.into()), _ => None, } }
Modules
discover |
Utilities for discovering devices on the LAN. |
Structs
Error |
The Error type. |
Record |
Any type of DNS record. |
Response |
A DNS response. |
Enums
ErrorKind |
The kind of an error. |
RecordKind |
A specific DNS record variant. |
Traits
ResultExt |
Additional methods for |