Как получить локальный IP-адрес udp на Android с помощью Boost Asio? - PullRequest
0 голосов
/ 15 февраля 2020

Я работаю над простым клиентом связи между Windows / Android с использованием Boost-Asio и UDP . При разрешении имени хоста и IP-адреса на Windows я получаю имя моего компьютера и действительный IP-адрес. Однако эквивалентный код на android возвращает localhost и 127.0.0.1. Как я могу получить IP-адрес, который можно использовать у других клиентов?

Фрагмент для получения локального IP-адреса

  auto io_service = asio::io_service();
  auto resolver = asio::ip::udp::resolver(io_service);
  const auto host_name = asio::ip::host_name(); // "localhost" on android
  const auto query = asio::ip::udp::resolver::query(host_name, "");
  const auto begin = resolver.resolve(query);
  const auto end = asio::ip::udp::resolver::iterator{};
  for (
    auto it = resolver.resolve(query);
    it != end;
    ++it
  ) { auto ip = it->endpoint().address(); } // only 127.0.0.1 on android

Android Манифест:

  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
...