【问题标题】:Get list of my Ethernet devices ip address in my PC with boost library使用 boost 库在我的 PC 中获取我的以太网设备 IP 地址列表
【发布时间】:2017-03-13 09:03:12
【问题描述】:

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

【问题讨论】:

    标签: c++ linux boost


    【解决方案1】:

    "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;
    }
    

    【讨论】:

    • 我测试了这个解决方案,但没有奏效。并返回此异常:resolve: Host not found (authoritative)
    猜你喜欢
    • 2013-12-14
    • 1970-01-01
    • 2011-10-14
    • 2016-10-24
    • 2015-02-26
    • 2022-10-12
    • 1970-01-01
    • 2023-03-04
    相关资源
    最近更新 更多