如何获取 boost::asio::ip::tcp::socket 的 IP 地址?

How to get IP address of boost::asio::ip::tcp::socket?(如何获取 boost::asio::ip::tcp::socket 的 IP 地址?)

本文介绍了如何获取 boost::asio::ip::tcp::socket 的 IP 地址?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 Boost ASIO 库用 C++ 编写服务器.我想在我的服务器日志中显示客户端 IP 的字符串表示.有人知道怎么做吗?

I'm writing a server in C++ using Boost ASIO library. I'd like to get the string representation of client IP to be shown in my server's logs. Does anyone know how to do it?

推荐答案

socket 有一个函数可以检索远程端点.我会尝试一下这个(长的)命令链,它们应该检索远程端 IP 地址的字符串表示:

The socket has a function that will retrieve the remote endpoint. I'd give this (long-ish) chain of commands a go, they should retrieve the string representation of the remote end IP address:

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

或单线版本:

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

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

这篇关于如何获取 boost::asio::ip::tcp::socket 的 IP 地址?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:如何获取 boost::asio::ip::tcp::socket 的 IP 地址?

基础教程推荐