c++ - 如何将可用本地接口(interface)的所有地址输出到控制台?

标签 c++ boost-asio

<分区>

我有一个本地网络接口(interface): 127.0.0.1, 192.168.0.73

如果我使用下面的代码:

std::string local_address = "";
std::string local_port= "80";
boost::asio::ip::tcp::resolver resolver(io_service_executors_);
ba::ip::tcp::resolver::query query(local_address, local_port);
local_endpoint_it_ = resolver.resolve(query);

for(auto it = local_endpoint_it_; it != ba::ip::tcp::resolver::iterator(); ++it)
    std::cout << it->endpoint() << std::endl;

local_address = ""时,我只能看到:

[:: 1]:80, 
127.0.0.1:80

local_address = "0.0.0.0" 时,我只看到:

0.0.0.0:80

local_address = "192.168.0.73" 时,我看到:

192.168.0.73:80

如果此时我不知道它们的地址,我如何获得我的本地接口(interface)的所有地址?

示例输出必须是:

127.0.0.1:80, 
192.168.0.73:80 
and may be [:: 1]: 80

最佳答案

getifaddrs 这里有一个 C++ 包装器:http://vrjuggler.org/docs/vapor/2.2/programmer.reference/namespacevpr.html#aadd07b8751f2d2ba6b757e9c11fd7eab

它不是 Boost Asio 的一部分,但该项目使用 Boost 并自行实现它,因此希望您会发现它适合。

关于c++ - 如何将可用本地接口(interface)的所有地址输出到控制台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17295550/

相关文章:

c++ - 用户定义的转换不适用于可变参数函数参数?为什么不?

c++ - 按逗号分隔的顺序打印树

C++ 问题解决 - 这是模拟 "tuple"的最佳方法吗?

c++ - 重构函数调用,同时减少结果类定义的代码重复

c++ - 指针值的严格弱排序

c++ - 如何使用 boost::asio io_service 异步运行函数

c++ - 取消后无错误地调用 boost::asio 异步处理程序

c++ - 停止异步连接

c++ - 如何每 200 秒使 io_service 发布特定功能?

c++ - boost Asio 错误