2017-03-13 3 views
0

私は多くのイーサネットカードを持つPCを持っています。
それぞれにはIPアドレスがあります。たとえば
私のイーサネットデバイスのIPアドレスのリストを私のPCのブーストライブラリ

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

がどのように私は、ブーストライブラリでこれらのリストを得ることができますか?

私はこのコードを使用しますが、単に返す:あなたが発見したとして「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; 
} 

答えて

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; 
} 
+0

私はこの解決策をテストしましたが、うまくいかなかった。この例外を返します:解決:ホストが見つかりません(権限) –

関連する問題