c++ boost-asio ip-address resolve

c++ - ¿Cómo convertir la URL en una dirección IP usando boost:: asio?



boost-asio ip-address (1)

Recuerde que puede haber varias direcciones IP para cualquier nombre de host, boost le brinda un iterador que las revisará.

El uso es bastante sencillo, agregue esto antes de la return 0; de su programa:

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'';

y no olvide #include <boost/asio.hpp>

prueba de funcionamiento:

~ $ 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

PD: para referencia, llamé

Así que necesito alguna forma de convertir el Protocol://URLorIP:Port cadena en cadena ip int port ¿Cómo hacer eso con boost ASIO y Boost Regex? ¿O es posible? Obtener IP usando C ++ Net Lib (impulsar candidato) - aviso - no necesitamos una conexión larga, solo IP.

Así que actualmente utilizo dicho código para analizar

#include <boost/regex.hpp> #include <vector> #include <string> int main(int argc, char** argv) { if (argc < 2) return 0; std::vector<std::string> values; boost::regex expression( // proto host port "^(/?:([^://?#]+)://)/?(//w+[^//?#:]*)(/?::(//d+))/?" // path file parameters "(//?(/?:[^/?#/]*/)*)/?([^/?#]*)/?(///?(.*))/?" ); std::string src(argv[1]); if (boost::regex_split(std::back_inserter(values), src, expression)) { const char* names[] = {"Protocol", "Host", "Port", "Path", "File", "Parameters", NULL}; for (int i = 0; names[i]; i++) printf("%s: %s/n", names[i], values[i].c_str()); } return 0; }

¿Qué debo agregar a mi pequeño programa para analizar la URL en IP?