Question

J'écris un serveur en C ++ à l'aide de la bibliothèque Boost ASIO. J'aimerais que la représentation sous forme de chaîne de l'adresse IP du client soit affichée dans les journaux de mon serveur. Est-ce que quelqu'un sait comment le faire?

Était-ce utile?

La solution

Le socket a une fonction qui va récupérer le point final distant. J'allais essayer cette chaîne de commandes (longue durée), elles devraient récupérer la représentation sous forme de chaîne de l'adresse IP de l'extrémité distante:

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();

ou la version à une ligne:

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

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

Autres conseils

Ou, encore plus facilement, avec boost :: lexical_cast :

#include <boost/lexical_cast.hpp>

std::string s = boost::lexical_cast<std::string>(socket.remote_endpoint());
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top