Boost asio socket: comment obtenir l'adresse IP, le port de l'adresse de connexion?
J'ai un serveur TCP à l'aide de boost asio. J'ai accepté une connexion de socket. Comment obtenir l'adresse IP, le Port de la machine, le serveur communique avec?
BTW: Est-il possible d'obtenir des informations sur ce que l'adresse ip du serveur connecté l'utilisateur voit mon server4 machine?
OriginalL'auteur Rella | 2011-03-18
Vous devez vous connecter pour publier un commentaire.
Vous pouvez obtenir l'adresse IP et le port comme ceci:
OriginalL'auteur Ralf
encore si vous obtenez de Mauvais Descripteur de Fichier d'erreur dans remote_endpoint vous pouvez vous référer au lien ci-dessous.
http://www.boost.org/doc/libs/1_51_0/doc/html/boost_asio/reference/basic_socket_acceptor/accept.html
"Accepter une nouvelle connexion et d'obtenir le point de terminaison de l'interlocuteur." la partie sera utile pour vous.
Vous pouvez utiliser comme ci-dessous
OriginalL'auteur Chirag Desai
http://www.boost.org/doc/libs/1_52_0/doc/html/boost_asio/reference/ip__tcp/endpoint.html
je n'ai pas d'expérience en la matière, mais il semble que l'adresse et le port des fonctions de membre devrait faire l'affaire
(edit pour la dernière version de Boost version)
OriginalL'auteur fazo
Je ne peux pas commenter sur l'original de la réplique. Je veux juste mentionner qu'il y a un problème avec le haut voté réponse:
socket().remote_endpoint()
peut jeterboost::system::system_error
. Alors, n'oubliez pas de traiter l'exception ou votre programme peut se bloquer. Il m'a fallu de nombreuses heures pour déboguer ce problème.OriginalL'auteur Hongliang Ma