Expand description
§dns_lookup
A small wrapper for libc to perform simple DNS lookups.
Two main functions are provided.
PS: If you only need a single result, consider ToSocketAddrs in libstd.
§lookup_host
Given a hostname, return an Iterator the IP Addresses associated with it.
use dns_lookup::lookup_host;
let hostname = "localhost";
let ips: Vec<std::net::IpAddr> = lookup_host(hostname).unwrap();
assert!(ips.contains(&"127.0.0.1".parse().unwrap()));
§lookup_addr
Given an IP Address, return the reverse DNS entry (hostname) for the given IP Address.
use dns_lookup::lookup_addr;
let ip: std::net::IpAddr = "127.0.0.1".parse().unwrap();
let host = lookup_addr(&ip).unwrap();
// The string "localhost" on unix, and the hostname on Windows.
§getaddrinfo
extern crate dns_lookup;
use dns_lookup::{getaddrinfo, AddrInfoHints, SockType};
fn main() {
let hostname = "localhost";
let service = "ssh";
let hints = AddrInfoHints {
socktype: SockType::Stream.into(),
.. AddrInfoHints::default()
};
let sockets =
getaddrinfo(Some(hostname), Some(service), Some(hints))
.unwrap().collect::<std::io::Result<Vec<_>>>().unwrap();
for socket in sockets {
// Try connecting to socket
let _ = socket;
}
}
§getnameinfo
use dns_lookup::getnameinfo;
use std::net::{IpAddr, SocketAddr};
let ip: IpAddr = "127.0.0.1".parse().unwrap();
let port = 22;
let socket: SocketAddr = (ip, port).into();
let (name, service) = match getnameinfo(&socket, 0) {
Ok((n, s)) => (n, s),
Err(e) => panic!("Failed to lookup socket {:?}", e),
};
println!("{:?} {:?}", name, service);
let _ = (name, service);
Structs§
- Addr
Info - Struct that stores socket information, as returned by getaddrinfo.
- Addr
Info Hints - A struct used as the hints argument to getaddrinfo.
- Addr
Info Iter - An iterator of
AddrInfo
structs, wrapping a linked-list returned by getaddrinfo. - Lookup
Error - Struct that stores a lookup error from
getaddrinfo
orgetnameinfo
. Can automatically be coerced to an io::Error using?
.
Enums§
- Addr
Family - Address Family
- Lookup
Error Kind - Different kinds of lookup errors that
getaddrinfo
andgetnameinfo
can return. These can be a little inconsitant between platforms, so it’s recommended not to rely on them. - Protocol
- Socket Protocol
- Sock
Type - Socket Type
Functions§
- get_
hostname - Fetch the local hostname.
- getaddrinfo
- Retrieve socket information for a host, service, or both. Acts as a thin wrapper around the libc getaddrinfo.
- getnameinfo
- Retrieve the name for a given IP and Service. Acts as a thin wrapper around the libc getnameinfo.
- lookup_
addr - Lookup the hostname of a given IP Address via DNS.
- lookup_
host - Lookup the address for a given hostname via DNS.