Domanda

Sto scrivendo un server in C ++ usando la libreria Boost ASIO. Vorrei che la rappresentazione in formato stringa dell'IP client fosse mostrata nei registri del mio server. Qualcuno sa come farlo?

È stato utile?

Soluzione

Il socket ha una funzione che recupererà l'endpoint remoto. Darei questa catena di comandi (long-ish), dovrebbero recuperare la rappresentazione di stringa dell'indirizzo IP dell'estremità remota:

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 versione one-liner:

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

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

Altri suggerimenti

O, ancora più semplice, con boost :: lexical_cast :

#include <boost/lexical_cast.hpp>

std::string s = boost::lexical_cast<std::string>(socket.remote_endpoint());
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top