Подключение реального устройства к эмулятору Android - PullRequest
3 голосов
/ 21 октября 2010

Я занимаюсь разработкой сетевого приложения для Android и все еще не могу подключить свое настоящее устройство Android к устройству-эмулятору на настольном компьютере.

Я создал частную сеть с маршрутизатором,поэтому единственные, подключенные к сети, - это мой компьютер и мой мобильный телефон, чтобы избежать проблем с брандмауэром / закрытыми портами.

IP-адрес моего компьютера 192.168.1.100, и я пытаюсь проверить связь друг с другомможет достигнуть моря каждого узла сети.Ping отлично работает с моего компьютера (не консоли эмулятора) на телефон.

Проблема в том, что я хочу пинговать эмулятор ПК с моего мобильного телефона, а не с самого ПК ... Для этого яиспользовать консоль эмулятора ... Должен ли я использовать IP своего компьютера или использовать другой?Я видел некоторые ip как "10.0.xx" здесь http://developer.android.com/guide/developing/tools/emulator.html

Но я предполагаю, что они предназначены для соединения двух ЭМУЛЯТОРОВ, верно?

Кроме того, я пытался соединить их с помощьюсокет, создающий перенаправление для порта через консоль эмулятора, но все еще не может соединить их.

Есть какие-нибудь подсказки?Спасибо !!

Ответы [ 3 ]

3 голосов
/ 16 декабря 2010

Я попробовал раннее решение, которое дал вам, но оно не сработало. Как вы сказали, возможно, причина в том, что команда redir консоли эмулятора перенаправляет только пакеты, приходящие с локального хоста.

Итак, я искал простой прокси-сервер и использовал его на той же машине, чтобы проверить его.

http://www.java2s.com/Code/Java/Network-Protocol/Asimpleproxyserver.htm

При этом я использовал следующую конфигурацию:

на прокси:

String host = "localhost";
int remoteport = 3000;
int localport = 4000;

Затем запустите экземпляр эмулятора:

  • Прослушивание сокета сервера через порт 2000.
  • Откройте экземпляр telnet и введите «redir add tcp: 3000: 2000»

И, наконец, на реальном устройстве откройте сокет с адресом машины на порту 4000.

Итак, карта сети выглядит так:

Устройство <-> машина: 4000 Прокси-машина: 3000 <->: 3000 Эмулятор: 2000 -> Приложение

Это сработало для меня, используя одно и то же приложение на устройстве и эмуляторе.

0 голосов
/ 01 декабря 2010

Возможно, вы сможете подключить реальное устройство к экземпляру эмулятора.

Вы пытались установить перенаправление на эмулируемом устройстве, а затем подключить реальное устройство через java-сокет?

Например:

На эмулируемом устройстве откройте сокет сервера, прослушивающий порт 2000, затем откройте соединение telnet и введите команду:

redir add tcp: 4000: 2000

Наконец, откройте сокет на реальном устройстве с адресом вашей машины (192.168.1.100) на порту 4000.

0 голосов
/ 22 октября 2010

Я пришел к выводу, что эмулятор может принимать только пакеты, поступающие из обратной петли (127.0.0.1), так как при запуске «redir add tcp: port: newPort» он перенаправляет только первый порт (связанный с обратной связью)ко второму порту (связан с «виртуальным IP-адресом эмулятора»).

Я попытался создать мост, который перенаправляет все пакеты, поступающие на мой компьютер, на IP 127.0.0.1, но все еще не работаетТаким образом, я думаю, что эмулятор был разработан только для связи с другими эмуляторами ...

Я надеюсь, что любой, кто приходит сюда, противоречит мне.

...