Estoy escribiendo un servidor en C++ usando la biblioteca Boost ASIO. Me gustaría que la representación de cadena de IP del cliente se muestre en los registros de mi servidor. Alguien sabe como hacerlo?Cómo obtener la dirección IP de boost :: asio :: ip :: tcp :: socket?
46
A
Respuesta
67
El socket tiene una función que recuperará el punto extremo remoto. Daría esta cadena (largo o menos) de comandos de una oportunidad, que deben 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();
21
o, más fácil, con boost::lexical_cast
:
#include <boost/lexical_cast.hpp>
std::string s = boost::lexical_cast<std::string>(socket.remote_endpoint());
Cuestiones relacionadas
- 1. boost :: asio :: ip :: tcp :: socket está conectado?
- 2. conectar en "conexión menos" boost :: asio :: ip :: udp :: socket
- 3. ¿Qué impulsa :: asio :: ip :: tcp :: resolver :: iterator do?
- 4. Obtener dirección IP local usando Boost.Asio
- 5. boost :: asio :: ip :: multicast :: join_group no funciona
- 6. Boost Asio multiproceso TCP Servidor síncrono
- 7. ¿Cómo obtener la dirección IP?
- 8. Crear un iostream usando boost asio especificando ip y puerto
- 9. Cómo obtener la dirección IP de sockaddr
- 10. Obtener la dirección IP de un socket remoto Endpoint
- 11. ¿Cómo debería uno derribar un impulso :: asio :: ip :: udp :: socket?
- 12. iPhone Socket TCP/IP del servidor/cliente
- 13. Determinación de la dirección IP y el puerto de una conexión TCP/IP entrante en Erlang
- 14. Conecta el socket utilizando la dirección IP secundaria
- 15. ¿Cómo obtener la dirección IP desde $ SSH_CLIENT
- 16. ¿Cómo obtener la dirección IP del servidor?
- 17. Obtener mi dirección de IP
- 18. Dirección ya en uso con el aceptador boost asio
- 19. Obtener la dirección IP de los visitantes
- 20. API TCP/IP simple de plataforma cruzada?
- 21. Obtener la dirección IP del usuario
- 22. Obtener la dirección IP 'externa' en Java
- 23. Boost asio socket multicast a una interfaz de ethernet específica
- 24. Dirección IP de sk_buff
- 25. Boost :: asio: ¿cómo interrumpir un hilo del servidor tcp bloqueado?
- 26. ¿Por qué recibo :: 1 como dirección IP en ASP.Net .. y cómo obtener la dirección IP correcta?
- 27. Problema de rendimiento de socket TCP/IP de Java
- 28. ¿Cómo compararías la dirección IP?
- 29. ¿Cómo obtener dirección IP local usando vb?
- 30. boost :: Asio socket async_ * strand
Gracias por su respuesta, me di cuenta de la cadena se puede escribir simplemente como:.. socket.remote_endpoint() Dirección() to_string() – kyku
Sí, así es como lo habría hecho (suponiendo que no hubiera posibilidades de nulos o errores en los puntos provisionales). Lo dejé expandido para propósitos explicativos. En mi opinión, la versión de una línea es mejor (me gusta mi código relativamente compacto para que pueda ver más en una pantalla). – paxdiablo