2

ローカル ネットワーク インターフェイスがあります: 127.0.0.1、192.168.0.73

次のコードを使用する場合:

std::string local_address = "";
std::string local_port= "80";
boost::asio::ip::tcp::resolver resolver(io_service_executors_);
ba::ip::tcp::resolver::query query(local_address, local_port);
local_endpoint_it_ = resolver.resolve(query);

for(auto it = local_endpoint_it_; it != ba::ip::tcp::resolver::iterator(); ++it)
    std::cout << it->endpoint() << std::endl;

local_address=の場合""、次のみが表示されます。

[:: 1]:80, 
127.0.0.1:80

local_address=の場合"0.0.0.0"、次のみが表示されます。

0.0.0.0:80

local_address=の場合"192.168.0.73"、次のように表示されます。

192.168.0.73:80

現時点でアドレスがわからない場合、ローカル インターフェイスのすべてのアドレスを取得するにはどうすればよいですか?

出力例は次のようになります。

127.0.0.1:80, 
192.168.0.73:80 
and may be [:: 1]: 80
4

1 に答える 1

1

ここに C++ ラッパーがありgetifaddrsます: http://vrjuggler.org/docs/vapor/2.2/programmer.reference/namespacevpr.html#aadd07b8751f2d2ba6b757e9c11fd7eab

これは Boost Asio の一部ではありませんが、そのプロジェクトは Boost を使用し、これ自体を実装しているので、うまくいけば適切であることがわかります。

于 2013-06-25T12:06:34.353 に答える