Я работаю над простым клиентом связи между 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" />