J'écris un serveur en C++ en utilisant la bibliothèque Boost ASIO. Je voudrais que la représentation 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?Comment obtenir l'adresse IP de boost :: asio :: ip :: tcp :: socket?
46
A
Répondre
67
Le socket dispose d'une fonction permettant de récupérer le point de terminaison distant. Je donnerais ce (long ish) chaîne de commandes un aller, ils doivent récupérer la représentation de chaîne de l'adresse IP 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 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();
21
ou, encore plus facile, avec boost::lexical_cast
:
#include <boost/lexical_cast.hpp>
std::string s = boost::lexical_cast<std::string>(socket.remote_endpoint());
Questions connexes
- 1. boost :: asio :: ip :: tcp :: le socket est connecté?
- 2. Boost asio ip tcp iostream Détection d'erreur
- 3. boost :: asio :: ip :: tcp :: resolver :: resolve() bloque pour toujours
- 4. problème d'écriture Socket TCP/IP
- 5. TCP/IP asynchrone côté serveur
- 6. boost.asio, comment lire un paquet IP complet en utilisant asio
- 7. boost :: asio, erreur de lecture asynchrone
- 8. Libérer un port TCP/IP?
- 9. Exemples de tramage de messages TCP/IP
- 10. HP PCL via TCP/IP
- 11. Détermination de l'adresse IP et du port d'une connexion TCP/IP entrante dans Erlang
- 12. boost asio prenant 100% cpu à lire
- 13. Ressource temporairement indisponible dans Boost ASIO
- 14. boost :: asio: Comment utiliser async_accept pour accepter les connexions entrantes?
- 15. java tcp ip programmation de socket quel que soit le type de proxy
- 16. Comment préfixer la longueur du message dans TCP/IP
- 17. Problème ip/port du serveur socket
- 18. Obtenir l'adresse IP-
- 19. Dois-je implémenter mes propres délais d'attente de socket TCP/IP?
- 20. Comment connecter une caméra TCP/IP au PC?
- 21. TCP/IP Window Socket // serveur (C++) et Client (java) ..not Travailler
- 22. Qui utilise Boost ASIO?
- 23. Nombre maximal de connexions TCP/IP simultanées - Win XP SP3
- 24. Comment obtenir l'adresse IP d'un point de terminaison distant WCF?
- 25. TCP/IP n'a pas réussi à établir une connexion sortante
- 26. Comment puis-je obtenir l'adresse IP externe d'une socket en Python?
- 27. boost asio: 0 octet écrire
- 28. SQL Exécution 2005 Fonction: TCP/IP vs canaux nommés
- 29. Script PowerShell pour désactiver/réactiver un port TCP/IP
- 30. Contrôle Java IP TTL?
Merci pour votre réponse, je me suis dit la chaîne peut être écrit simplement:.. socket.remote_endpoint() adresse() to_string() – kyku
Ouais, c'est comme ça que je l'aurais fait (en supposant qu'il n'y avait pas de possibilités de null ou d'erreurs aux points intermédiaires). Je l'ai laissé développé à des fins explicatives. A mon avis, la version one-liner est meilleure (j'aime mon code relativement compact donc je peux en voir plus sur un écran). – paxdiablo