Как я могу инициировать HTTP-запрос Android-to-PC через USB?
Это просил, но не получил удовлетворительного ответа.
из моего приложения Android мне нужно отправить HTTP-запрос на ПК, подключенный через USB. Как правило, связь с помощью ADB является односторонней, от ПК до Android.
Как упоминалось в ответах на вышеупомянутый дубликат, это было сделано раньше:Android USB-Порт Переадресации. Если мне действительно нужно, я мог бы просто загрузить это приложение и испортить это, но я бы предпочел реализовать это в своем собственном приложении.
какие идеи?
5 ответов
на самом деле это не общение, которое является одним из способов, но способность инициировать соединения.
чтобы сделать это со стандартной функциональностью android, вам концептуально придется туннелировать соединения, инициированные устройством, через существующее соединение, инициированное ПК. Например, используя готовые инструменты:
- настройте порт ADB вперед от ПК к устройству
- запустите SSH-сервер на устройстве android с непривилегированным номером порта соответствующий вашему adb forward
- подключение к телефону от клиента SSH на ПК через ADB вперед, и настроить SSH вперед порта на телефоне обратно в порт на ПК
- запустите сервер на ПК, прослушивающем порт назначения SSH forward.
- имейте свой код на телефоне, свяжитесь с сервером на ПК через этот SSH-порт вперед
на самом деле вам не нужно использовать SSH, просто это пакеты вверх по частям готовый к использованию.
в качестве альтернативной идеи некоторые устройства Android, которые поддерживают USB-модем для предоставления услуг мобильной сети ПК, неявно создают двунаправленную IP-сеть по usb-кабелю, которую вы можете использовать для других целей. Но будьте очень осторожны, чтобы случайно не направить весь сетевой трафик ПК через телефон.
Если телефон Android поддерживает USB-модем:
- Подключите телефон через USB кабель
- включить USB-модем
- подключение к локальной сети будет создано в диапазоне IP 192.168.142.X [IP для этой локальной сети также может быть статическим]
теперь веб-сервер, работающий на ПК, может отправлять HTTP-запросы с этой настройкой.
в USB это всегда хост (ПК в вашем случае), который инициирует связь. Таким образом, вам нужно будет использовать трюки, чтобы появиться, что устройство Android отправляет запрос. ПК может периодически опрашивать Android (скажем, каждые 100 мс), если у него есть ожидающий HTTP-запрос и собирать его соответственно, подобно тому, что jackbot сделал. Я думаю, что это то, что сделал Android для переадресации портов USB.
для этой цели должно быть возможно использовать USB-модем. Когда вы начинаете USB-модем для вашего ПК на устройстве Android, ПК и Android стали в одной локальной сети. Он позволяет получить доступ к ПК (например, тестовый http-сервер) через HTTP.
к сожалению, вы не можете отправлять HTTP-запросы через локальный сокет, например /dev/tty... или похожи. По умолчанию android-устройство, если оно получает IP-адрес, будет делать это через DHCP или статический IP-адрес, который вы установили. Что вам нужно будет сделать, это знать IP настольного компьютера.
Что вы на самом деле пытаетесь достичь? Если приложение отправит запрос на localhost, который будет ретранслироваться на ПК?
этот ответ может помочь "найти ИС рабочий стол через usb-модем"