hostbyaddr/
hostbyaddr.rs

1extern crate netdb;
2
3use std::env;
4use std::net::IpAddr;
5use std::str::FromStr;
6use netdb::hosts::get_host_by_addr;
7
8fn main() {
9    let mut args = env::args();
10    let cmd = args.next().unwrap();
11    let addr = match args.next() {
12        None => {
13            println!("Usage: {} <addr>", cmd);
14            return;
15        }
16        Some(addr) => addr
17    };
18
19    let addr = match IpAddr::from_str(&addr) {
20        Ok(addr) => addr,
21        Err(err) => {
22            println!("Not an address: {:?}", err);
23            return;
24        }
25    };
26
27    match get_host_by_addr(addr) {
28        Ok(Some(ent)) => {
29            println!("{}", addr);
30            println!("  {}", ent.name());
31            if !ent.aliases().is_empty() {
32                println!("  Aliases:");
33                for name in ent.aliases() {
34                    println!("     {}", name);
35                }
36            }
37            println!("  Addresses:");
38            for addr in ent.addrs() {
39                println!("     {}", addr);
40            }
41        }
42        Ok(None) => println!("Not found."),
43        Err(err) => println!("Error: {:?}", err),
44    }
45}
46
47