当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何获取boost::asio::ip::tcp::socket的IP地址?》经验,为你挑选了2个好方法。

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



1> paxdiablo..:

套接字具有检索远程端点的功能.我给这个(long-ish)命令链一个go,他们应该检索远程端IP地址的字符串表示:

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


是的,我就是这样做的(假设在临时点没有空值或错误的可能性).为了解释的目的,我把它扩展了.在我看来,单行版本更好(我喜欢我的代码相对紧凑,所以我可以在屏幕上看到更多).

2> marton78..:

或者,更简单,有boost::lexical_cast:

#include 

std::string s = boost::lexical_cast(socket.remote_endpoint());

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有