Wie kann ich eine Android-zu-PC-HTTP-Anfrage über USB initiieren?

8

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?

    
Tom Wright 28.05.2012, 18:10
quelle

5 Antworten

7

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:

  1. Richten Sie einen ADB-Port vom PC zum Gerät
  2. ein
  3. Führen Sie einen SSH-Server auf dem Android-Gerät auf einer nicht privilegierten Portnummer aus, die Ihrem adb-Forward
  4. entspricht
  5. Verbinden Sie sich über die ADB-Weiterleitung von einem SSH-Client auf dem PC mit dem Telefon und richten Sie eine SSH-Weiterleitung eines Anschlusses am Telefon zurück an einen Anschluss am PC ein
  6. Führen Sie einen Server auf dem PC aus, der am Zielport des SSH-Forwards lauscht.
  7. Lassen Sie Ihren Code auf dem Telefon den Server auf dem PC über diesen SSH-Port weiterleiten

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.

    
Chris Stratton 06.06.2012, 17:55
quelle
7

Wenn das Android-Telefon USB-Tethering unterstützt:

  1. Schließen Sie das Telefon über ein USB-Kabel an
  2. USB-Tethering aktivieren
  3. Eine lokale Netzwerkverbindung würde im IP-Bereich 192.168.142.X erstellt werden. [Die IP für dieses LAN kann ebenfalls statisch gemacht werden]

Nun kann ein Webserver, der auf dem PC läuft, mit diesem Setup HTTP-Anfragen senden.

    
Ach J 26.10.2012 13:01
quelle
1

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.

    
Igor F. 06.06.2012 09:27
quelle
0

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.

    
Alexey 23.07.2012 16:27
quelle
-1

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 "

    
Mike Mackintosh 06.06.2012 17:18
quelle

Tags und Links