LIBWIRE
Next-generation C++17 networking library.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
dns_query.cpp
Go to the documentation of this file.
1 #include <iostream>
2 #include <libwire/dns.hpp>
3 
11 int main(int argc, char** argv) {
12  using namespace libwire;
13 
14  if (argc != 2) {
15  std::cerr << "Usage: dns-query <domain>\n";
16  return 1;
17  }
18 
19  std::vector<address> result_v4;
20  try {
21  result_v4 = dns::resolve(ip::v4, argv[1]);
22  } catch (std::system_error& ec) {
23  std::cerr << "Failed to query IPv4 info: " << ec.what() << '\n';
24  }
25 
26  if (result_v4.empty()) {
27  std::cout << "No IPv4 results.\n";
28  } else {
29  std::cout << "IPv4:\n";
30  }
31  for (const auto& address : result_v4) {
32  std::cout << " " << address.to_string() << '\n';
33  }
34 
35  std::cout << '\n';
36 
37  std::vector<address> result_v6;
38  try {
39  result_v6 = dns::resolve(ip::v6, argv[1]);
40  } catch (std::system_error& ec) {
41  std::cerr << "Failed to query IPv6 info: " << ec.what() << '\n';
42  }
43 
44  if (result_v6.empty()) {
45  std::cout << "No IPv6 results.\n";
46  } else {
47  std::cout << "IPv6:\n";
48  }
49  for (const auto& address : result_v6) {
50  std::cout << " " << address.to_string() << '\n';
51  }
52 }
std::string to_string() const noexcept
Convert address object to string representation.
IPv4/IPv6 address structure.
Definition: address.hpp:63
This file defines free functions for interaction with system resolver.
std::vector< address > resolve(ip protocol, const std::string_view &domain, std::error_code &ec) noexcept
Resolve domain name to one or more IP addresses of 'protocol' version.
int main(int argc, char **argv)
Definition: dns_query.cpp:11