Come ottenere l'indirizzo IP di boost :: asio :: ip :: tcp :: socket?
-
03-07-2019 - |
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?
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