как использовать переадресацию порта ADB? - PullRequest
0 голосов
/ 25 апреля 2018

Я создаю подключаемый модуль отладки для Android Studio, и он запускает сервер и прослушивает порт.Устройство (мобильное с запущенным adb deamon) подключено через USB.

И мое приложение будет отправлять некоторые файлы, запросы, журналы просто данные в порт.Это моя концепция.

Итак, я хочу отправить его через USB.В то время как некоторые раскопки я нашел Переадресация / реверсирование порта ADB является ответом на это.Но я не понял всей концепции переадресации портов с использованием adb.

  1. Хочу ли я запустить ServerSocket как на развивающейся машине, так и на мобильном?

  2. Если это так, я запустил ServerSocket: on port 8080 и устройство ServerSocket: on 9090, тогда выполнение adb forward tcp:8080 tcp:9090 будет перенаправлено на 8080, который находится на проявочной машине?

  3. Как они пересылаютили перенаправить на порт машины?

  4. Как выполнять команды ADB из кода Java?

Конечная цель - я хочу общаться с моим приложением/ библиотека от телефона до развивающей машины.

Я новичок в сети и подобных вещах.

Заранее спасибо.

1 Ответ

0 голосов
/ 25 апреля 2018

Я предлагаю вам прочитать и выполнить шаги, описанные в этом руководстве.Этот урок действительно помог мне, когда я писал игровой контроллер для Android для компьютерных игр , где приложение для Android отправляло входы на ПК через USB (используя adb)

  1. Хочу ли я запустить ServerSocket как на развивающемся компьютере, так и на мобильном?

Нет, только одна сторона должна открывать ServerSocket ( для меня - открытие ServerSocket на устройстве Android иподключение с помощью клиентского сокета от ПК работало отлично )

Если это так, я запустил ServerSocket: на порту 8080 и устройство ServerSocket: на 9090, затем выполните adb forward tcp: 8080 tcp: 9090 будет перенаправлен на 8080, который находится на развивающейся машине ?

Не знаю, работает ли у вас открытие ServerSocket на машине разработки, у меня не получилось, когда я использовал adb.Убедитесь, что вы делаете следующие шаги

a.Откройте ServerSocket на одной стороне и прослушайте соединения (ServerSocker.accept ()), скажем, порт № 38100

b.С машины разработки выполните команду adb forward tcp:38300 tcp:38100

c.Затем на стороне клиента позвоните socket = new Socket("localhost", 38300);

d.Передача данных

Как выполнять команды adb из кода Java?

Использование класса времени выполнения Java

String adbPath = "C:\\android-sdk-windows\\tools\\adb.exe";
Runtime.getRuntime().exec(adbPath + " forward tcp:38300 tcp:38100");

см. Выполнить внешнюю программу из Java

...