我有一台有很多以太网卡的电脑。
他们每个人都有一个IP地址。
例如:

eth0 "192.168.1.2"
eth1 "192.168.1.100"
eth2 "192.168.2.1"

如何使用boost库获取这些列表?
我使用了这个代码,但是返回:“127.0.0.1”
boost::asio::io_service io;
boost::asio::ip::tcp::resolver resolver(io);
boost::asio::ip::tcp::resolver::query query("localhost","");
boost::asio::ip::tcp::resolver::iterator iter = resolver.resolve(query);
boost::asio::ip::tcp::resolver::iterator end;

while(iter != end) {
    std::cout << iter->endpoint().address().to_string() << std::endl;
    ++iter;
}

最佳答案

正如您所发现的,“localhost”具体指的是环回接口。
要查看所有接口,请按实际主机名查询;例如:

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

    std::cout<<addr.to_string()<<std::endl;
}

10-06 05:17