【发布时间】:2011-06-13 06:18:24
【问题描述】:
我正在尝试枚举我的电脑所有网卡(我有 2 个网卡)的 ipv4 和 ipv6 地址。
我正在使用以下代码来执行此操作。
using boost::asio::ip::tcp;
boost::asio::io_service io_service;
tcp::resolver resolver(io_service);
tcp::resolver::query query(boost::asio::ip::host_name(),"");
tcp::resolver::iterator it=resolver.resolve(query);
while(it!=tcp::resolver::iterator())
{
boost::asio::ip::address addr=(it++)->endpoint().address();
if(addr.is_v6())
{
std::cout<<"ipv6 address: ";
}
else
std::cout<<"ipv4 address: ";
std::cout<<addr.to_string()<<std::endl;
}
代码显示正确的 ipv4 地址,但不显示 ipv6。这是输出
ipv6 address: ::1
ipv4 address: 192.168.10.200
ipv4 address: 192.168.10.236
我对 ipv6 的了解非常少。当我使用 ipconfig/all 列出有关网络接口的信息时,我看到实际的 ipv6 地址是
fe80::226:5aff:fe14:5687%5
fe80::225:64ff:feb2:4f61%4
有人可以指导我如何列出 ipv6 地址。 谢谢。
【问题讨论】:
-
fe80::是链接本地范围地址,Boost 可能只枚举全局范围地址。
标签: boost-asio ipv6