Pregunta

Estoy escribiendo un servidor en C ++ utilizando la biblioteca ASIO de Boost. Me gustaría obtener la representación de cadena de la IP del cliente para que se muestre en los registros de mi servidor. ¿Alguien sabe cómo hacerlo?

¿Fue útil?

Solución

El zócalo tiene una función que recuperará el punto final remoto. Le daría una oportunidad a esta cadena de comandos (de larga duración), deberían recuperar la representación de cadena de la dirección IP del extremo remoto:

asio::ip::tcp::socket socket(io_service);
// Do all your accepting and other stuff here.

asio::ip::tcp::endpoint remote_ep = socket.remote_endpoint();
asio::ip::address remote_ad = remote_ep.address();
std::string s = remote_ad.to_string();

o la versión de una sola línea:

asio::ip::tcp::socket socket(io_service);
// Do all your accepting and other stuff here.

std::string s = socket.remote_endpoint().address().to_string();

Otros consejos

O, aún más fácil, con boost :: lexical_cast :

#include <boost/lexical_cast.hpp>

std::string s = boost::lexical_cast<std::string>(socket.remote_endpoint());
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top