Разъем для Android-серверов

Я не могу связаться с Android-сервером на эмуляторе из программы на своем рабочем столе, как ее решить?

Некоторый код (из Как найти IP-адрес локальной сети Android-устройства?):

public static ArrayList<String> getSelfIP(){
    try {
        ArrayList<String> ipList = new ArrayList<>();
        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()) {
                    ipList.add(inetAddress.getHostAddress().toString());
                }
            }
        }

        return ipList;
    } catch (SocketException ex) {}
    return null;
}

Результат [fe80::5054:ff:fe12:3456%eth0, 10.0.2.15]

Что мне нужно настроить или сделать, чтобы сделать эмулятор доступным для моих настольных программ?

Я сделал следующее:

> adb forward tcp:50000 tcp:50000

Однако я не могу получить доступ к серверу через localhost: 50000.

Ответы

Ответ 1

Попробуйте использовать IP-адрес 10.0.2.2.

Это специальный псевдоним вашего интерфейса loop loopback (т.е. 127.0.0.1 на вашей машине разработки)

Ответ 2

Взгляните на эту документацию по Android, раздел "Использование перенаправления сети".

Настройка перенаправления через консоль эмулятора

Каждый экземпляр эмулятора предоставляет консоль управления, к которой вы можете подключиться to, для выдачи команд, специфичных для этого экземпляра. Вы можете использовать команда redir console для настройки перенаправления, когда это необходимо для экземпляр эмулятора.

Сначала определите номер порта консоли для целевого эмулятора пример. Например, номер порта консоли для первого эмулятора экземпляр запущен - 5554. Затем подключитесь к консоли цели экземпляр эмулятора, указав его номер порта консоли, следующим образом:

telnet localhost 5554

После подключения используйте команду redir для работы с перенаправлением. Чтобы добавить перенаправление, используйте:

add <protocol>:<host-port>:<guest-port>

где <protocol> либо tcp или udp, а <host-port> и <guest-port> задает сопоставление между вашим собственной машины и эмулируемой системы, соответственно.

Например, следующая команда устанавливает перенаправление, которое обрабатывает все входящие TCP-подключения к вашей машине (разработке) на 127.0.0.1:5000 и передаст их в эмулированную систему 10.0.2.15:6000:

redir add tcp:5000:6000

В вашем случае последней командой будет

redir add tcp:5000:5000

Ответ 3

У меня была эта проблема один раз, используйте 10.0.2.2 IP-адрес, который должен решить вашу проблему.