Как я могу инициировать HTTP-запрос для Android-ПК через USB?

Это было задано раньше , но не получило удовлетворительного ответа.

Из моего приложения для Android мне нужно отправить HTTP-запрос на ПК, подключенный через USB. Как правило, связь с использованием АБР является односторонней, от ПК до Android.

Как уже упоминалось в ответах на вышеупомянутый дубликат, это было сделано до: Android Usb Port Forwarding . Если бы мне действительно нужно было, я мог бы просто загрузить это приложение и запустить его, но я бы скорее реализовал это в своем собственном приложении.

Есть идеи?

На самом деле это не общение, которое является одним из способов, но способность инициировать соединения .

Для этого со стандартными функциями Android вы концептуально должны туннелировать инициированные устройством соединения через существующее соединение с ПК. Например, использование инструментов с полки:

  1. Настройте порт ADB с ПК на устройство
  2. Запустите SSH-сервер на устройстве Android на непривилегированном номере порта, соответствующем вашей adb forward
  3. Подключитесь к телефону от клиента SSH на ПК через ADB вперед и настройте SSH вперед по порту на телефоне обратно в порт на ПК
  4. Запустите сервер на ПК, который прослушивает порт назначения SSH вперед.
  5. Попросите свой код на телефоне связаться с сервером на ПК через этот порт SSH вперед

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

В качестве альтернативной идеи некоторые устройства Android, поддерживающие USB-модем, чтобы обеспечить мобильную сеть на ПК, неявно заканчивают создание двунаправленной IP-сети по USB-кабелю, которую вы можете использовать для других целей. Но будьте очень осторожны, чтобы вы случайно не проложили весь сетевой трафик ПК через телефон.

Если телефон Android поддерживает USB-модем:

  1. Подключите телефон через USB-кабель
  2. Включить USB-модем
  3. Соединение с локальной сетью будет создано в диапазоне IP 192.168.142.X [IP для этой локальной сети также может быть статичным]

Теперь веб-сервер, работающий на ПК, может отправлять HTTP-запросы с этой настройкой.

На USB это всегда хост (ПК в вашем случае), который инициирует сообщение. Поэтому вам нужно будет использовать трюки, чтобы отобразить, что устройство Android отправляет запрос. ПК может периодически опробовать Android (скажем, каждые 100 мс), если у него есть ожидающий HTTP-запрос и собирать его соответственно, аналогично тому, что делал сервер . Наверное, это то, что сделал Android для USB Port Forwarding.

Для этой цели необходимо использовать USB-модем. Когда вы запускаете USB-модем для своего ПК на устройстве Android, тогда ПК и Android стали в одной локальной сети. Он позволяет получить доступ к ПК (например, тестовому HTTP-серверу) через HTTP.

К сожалению, вы не можете отправлять HTTP-запросы через локальный сокет, например / dev / tty … или аналогично. По умолчанию устройство Android, если оно приобретает IP-адрес, сделает это через DHCP или статический IP-адрес, который вы установили. То, что вам нужно будет сделать, – это знать IP настольного компьютера.

Что вы на самом деле пытаетесь достичь? Если приложение отправит запрос на localhost, который будет ретранслировать на ПК?

Этот ответ может помочь « найти ip рабочего стола для привязки usb »