I have a TCP server using boost asio. I have accepted a socket connection. How to get IP, Port of machine my server is communicating with?
BTW: Is it possible to get info on what ip that connected server user sees my server4 machine?
You can get the IP and port like this:
std::string sClientIp = socket().remote_endpoint().address().to_string();
unsigned short uiClientPort = socket().remote_endpoint().port();
still if you get Bad File Descriptor error in remote_endpoint you can refer to below link.
http://www.boost.org/doc/libs/1_51_0/doc/html/boost_asio/reference/basic_socket_acceptor/accept.html
"Accept a new connection and obtain the endpoint of the peer." part will be helpful to you.
You can use as below
tcp::acceptor::endpoint_type end_type;
acceptor.accept(*stream.rdbuf(), end_type);
std::string sClientIp = end_type.address().to_string();
http://www.boost.org/doc/libs/1_52_0/doc/html/boost_asio/reference/ip__tcp/endpoint.html
i don't have experience in it, but it looks like address and port member functions should do the trick
(edit for latest Boost version)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With