我有一台有很多以太网卡的电脑。
他们每个人都有一个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;
}