如何向控制台输出可用本地接口的所有地址?

时间:2013-06-25 10:59:31

标签: c++ boost-asio

我有一个本地网络接口: 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

如果此时我不知道他们的地址,我如何获取本地接口的所有地址?

示例输出必须是:

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

1 个答案:

答案 0 :(得分:1)

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

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