Доступ к IP-адресу эмулятора Android с других - PullRequest
0 голосов
/ 02 июля 2019

Я пытался создать http-сервер на моем Android.APK отлично работает на моем реальном устройстве.Я получаю IP-адрес следующим образом:

Enumeration<NetworkInterface> enumNetworkInterfaces = NetworkInterface.getNetworkInterfaces();

while (enumNetworkInterfaces.hasMoreElements()) {

    NetworkInterface networkInterface = enumNetworkInterfaces.nextElement();
    Enumeration<InetAddress> enumInetAddress = networkInterface.getInetAddresses();

    while (enumInetAddress.hasMoreElements()) {

        InetAddress inetAddress = enumInetAddress.nextElement();

        if (inetAddress.isSiteLocalAddress()) {
            ip += "SiteLocalAddress: " + inetAddress.getHostAddress() + "\n";
        }
    }
}

Он работает на моем реальном устройстве.В браузере я могу получить к нему доступ, введя указанный выше IP-адрес (например, 192.168.1.21:8888)

Но если я запускаю код на моем эмуляторе.Он показывает больше IP-адресов, некоторые из них похожи на MAC-адреса, а некоторые похожи на нормальные адреса (но они разные): Например,

192.168.232.2

и

192.168.200.2: 8888

Затем я попытался получить доступ к обоим в браузере, но через некоторое время при загрузке выдается сообщение об ошибке "Этот сайт недоступенMsgstr ""

Я попытался переадресовать порт на adb forward tcp:8888 tcp:8888, но не повезло.Я также попробовал 10.0.2.2:8888, но, возможно, это неправильно, потому что это похоже на пересылку с эмулятора на локальный ПК, а не наоборот ... Итак ... что я сделал не так?

Спасибо за ваше время

РЕДАКТИРОВАТЬ: после проверки монитора ресурсов, порт 8888 в настоящее время adb.exe

1 Ответ

0 голосов
/ 02 июля 2019
try this one
public static String getLocalIpAddress() {
    try {
        for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
            NetworkInterface intf = en.nextElement();
            for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
                InetAddress inetAddress = enumIpAddr.nextElement();
                if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) {
                    return inetAddress.getHostAddress();
                }
            }
        }
    } catch (SocketException ex) {
        ex.printStackTrace();
    }
    return null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...