C++ Boost asio套接字:如何获取连接的IP、端口地址?

C++ Boost asio套接字:如何获取连接的IP、端口地址?,c++,tcp,ip,boost-asio,C++,Tcp,Ip,Boost Asio,我有一个使用boost asio的TCP服务器。我已接受套接字连接。如何获取我的服务器与之通信的机器的IP端口 顺便问一下:是否可以获取连接的服务器用户看到我的server4机器的ip信息? 我没有这方面的经验,但看起来地址和端口成员函数应该可以做到这一点 (针对最新的Boost版本进行编辑)您可以获得如下IP和端口: std::string sClientIp = socket().remote_endpoint().address().to_string(); unsigned short

我有一个使用boost asio的TCP服务器。我已接受套接字连接。如何获取我的服务器与之通信的机器的IP端口

顺便问一下:是否可以获取连接的服务器用户看到我的server4机器的ip信息?

我没有这方面的经验,但看起来地址和端口成员函数应该可以做到这一点


(针对最新的Boost版本进行编辑)

您可以获得如下IP和端口:

std::string sClientIp = socket().remote_endpoint().address().to_string();
unsigned short uiClientPort = socket().remote_endpoint().port();

不过,若您在远程_端点中发现错误的文件描述符错误,您可以参考下面的链接

“接受新连接并获取对等方的端点。”部分将对您有所帮助

你可以使用下面的方法

tcp::acceptor::endpoint_type end_type;
acceptor.accept(*stream.rdbuf(), end_type);
std::string sClientIp = end_type.address().to_string();

我不能对最初的答案发表评论。我只想提一下,得票最多的答案有一些问题:
socket()。远程端点()
可能抛出
boost::system::system\u错误
。因此,请记住处理异常,否则您的程序可能会崩溃。调试这个问题花了我好几个小时