我有一个本地网络接口: 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
答案 0 :(得分:1)
这里有一个getifaddrs
的C ++包装器:http://vrjuggler.org/docs/vapor/2.2/programmer.reference/namespacevpr.html#aadd07b8751f2d2ba6b757e9c11fd7eab
它不是Boost Asio的一部分,但该项目使用Boost并自行实现,所以希望你会发现它适合。