Dies wurde vorher gefragt , erhielt aber keine zufriedenstellende Antwort.
Von meiner Android-Anwendung muss ich eine HTTP-Anfrage an einen über USB angeschlossenen PC senden. In der Regel erfolgt die Kommunikation mit ADB in einer Richtung, vom PC zum Android.
Wie in den Antworten auf das oben genannte Duplikat erwähnt, wurde dies bereits vor: Android Usb Port Weiterleiten . Wenn ich wirklich müsste, könnte ich einfach diese App herunterladen und verpfuschen, aber ich würde das lieber in meiner eigenen App implementieren.
Irgendwelche Ideen?
Es ist nicht wirklich die Kommunikation, die eine Möglichkeit ist, sondern die Fähigkeit Verbindungen zu initiieren .
Um dies mit der Standard-Android-Funktionalität zu tun, müssen Sie konzeptionell die vom Gerät initiierten Verbindungen über eine bestehende PC-initiierte Verbindung tunneln. Zum Beispiel mit Standardwerkzeugen:
Sie müssen SSH nicht wirklich verwenden, es ist nur so, dass es die gebrauchsfertigen Teile zusammenpackt.
Als eine andere Idee enden einige Android-Geräte, die USB-Tethering unterstützen, um einen Mobilfunkdienst für einen PC bereitzustellen, implizit ein bidirektionales IP-Netzwerk über das USB-Kabel, das Sie für andere Zwecke verwenden können. Aber seien Sie sehr vorsichtig, dass Sie nicht versehentlich den gesamten Netzwerkverkehr des PCs durch das Telefon leiten.
Wenn das Android-Telefon USB-Tethering unterstützt:
Nun kann ein Webserver, der auf dem PC läuft, mit diesem Setup HTTP-Anfragen senden.
In USB ist es immer der Host (der PC in Ihrem Fall), der die Kommunikation initiiert. Daher müssen Sie mit Tricks feststellen, dass das Android-Gerät eine Anfrage sendet. Der PC fragt möglicherweise regelmäßig Android ab (etwa alle 100 ms), wenn eine HTTP-Anforderung aussteht, und sammelt sie entsprechend, ähnlich wie bei Jackbot hat. Ich denke, das ist, was Android zu USB Port Forwarding tat.
Es sollte möglich sein, USB-Tethering für diesen Zweck zu verwenden. Wenn Sie USB-Tethering für Ihren PC auf einem Android-Gerät starten, werden PC und Android im selben lokalen Netzwerk. Es ermöglicht den Zugriff auf den PC (zum Beispiel HTTP-Server testen) über HTTP.
Leider können Sie keine HTTP-Anfragen über einen lokalen Socket wie / dev / tty ... oder ähnliches senden. Standardmäßig hat das Android-Gerät, wenn es eine IP-Adresse erhält, dies über DHCP oder eine statische IP-Adresse, die Sie festgelegt haben. Was Sie tun müssen, ist die IP des Desktop-Computers zu kennen.
Was versuchst du wirklich zu erreichen? Nachdem die Anwendung eine Anfrage an localhost gesendet hat, die an den PC weitergeleitet wurde?
Diese Antwort kann helfen " finden IP des Desktops über USB-Tethering "