Ответ 1
Помните, что может быть несколько IP-адресов для любого имени хоста, boost дает вам итератор, который пройдет через них.
Использование довольно просто, добавьте это до return 0;
вашей программы:
std::cout << "IP addresses: \n";
boost::asio::io_service io_service;
boost::asio::ip::tcp::resolver resolver(io_service);
boost::asio::ip::tcp::resolver::query query(values[1], "");
for(boost::asio::ip::tcp::resolver::iterator i = resolver.resolve(query);
i != boost::asio::ip::tcp::resolver::iterator();
++i)
{
boost::asio::ip::tcp::endpoint end = *i;
std::cout << end.address() << ' ';
}
std::cout << '\n';
и не забывайте #include <boost/asio.hpp>
тестовый прогон:
~ $ g++ -g -Wall -Wextra -pedantic -Wconversion -ansi -o test test.cc -lboost_regex -lboost_system -lboost_thread
~ $ ./test http://www.google.com:7777
Protocol: http
Host: www.google.com
Port: 7777
Path:
File:
Parameters:
IP addresses:
74.125.226.179 74.125.226.176 74.125.226.178 74.125.226.177 74.125.226.180
PS: Для справки я позвонил
- TCP resolver конструктор
- query конструктор хоста/службы со значением обслуживания
""
- исключение-бросание формы решения()
- разыменовал итератор, чтобы получить запись распознавателя
- используется преобразование типа resolver_entry в конечную точку
- используется конечная точка TCP address().
- используется оператор < < < <, чтобы показать адрес: вместо этого вы можете использовать to_string(), если необходимо.