Zugriff auf den lokalen Host des PCs über ein über USB angeschlossenes Android-Mobilgerät

84

Ich habe ein Android-Gerät (Samsung Galaxy Tab) über USB an meinen PC angeschlossen.

Ich möchte WebServices verwenden und eine Webseite ausführen, die sich auf meinem lokalen xampp-Server meines PCs auf meinem Android-Gerät befindet.

Ich kann es erreichen, wenn beide, mein PC und mein Android-Gerät, im selben drahtlosen Netzwerk verbunden sind.

Es ist jedoch möglich, ohne drahtlose Verbindung nur über eine USB-Verbindung auf die localhost-Seite zuzugreifen.

(PS: Das gleiche Szenario funktioniert, wenn ich die App auf einem Emulator ausführe und die IP 10.0.2.2 verwende, um auf den lokalen Host auf meinem PC zuzugreifen.)

Saurabh
quelle
Bitte benutzen Sie den folgenden Link stackoverflow.com/questions/4779963/… Es hat bei mir funktioniert.
1
Schalten Sie die Firewall aus, während Sie Ihre Webseite testen, oder fügen Sie Ihre IP in den Firewall-Einstellungen zu den vertrauenswürdigen Netzwerken hinzu.
Zeeali
Schauen Sie sich diesen Blog mycodingchannel.in/blog/… für Details an
kontashi35

Antworten:

34

Ich habe dieses Problem endlich gelöst. Ich habe Samsung Galaxy S mit Froyo verwendet. Der "Port" unten ist derselbe Port, den Sie für den Emulator verwenden (10.0.2.2:port). Was ich getan habe:

  1. Verbinden Sie zuerst Ihr reales Gerät mit dem USB-Kabel (stellen Sie sicher, dass Sie die App auf Ihr Gerät hochladen können).
  2. Rufen Sie die IP-Adresse von dem Gerät ab, mit dem Sie eine Verbindung herstellen. Diese beginnt mit 192.168.xx: port
  3. Öffnen Sie das "Netzwerk- und Freigabecenter".
  4. Klicken Sie auf dem Gerät auf "LAN-Verbindung" und wählen Sie "Details".
  5. Kopieren Sie die "IPv4-Adresse" in Ihre App und ersetzen Sie sie wie folgt: http://192.168.x.x:port/test.php
  6. Laden Sie Ihre App (erneut) auf Ihr reales Gerät hoch
  7. Gehen Sie zu Eigenschaften und aktivieren Sie "USB-Tethering"
  8. Führen Sie Ihre Anwendung auf dem Gerät aus

Es sollte jetzt funktionieren.

Zsivics Sanel
quelle
Wenn ich das mache, bekomme ich eine unbekannte Host-Ausnahme.
AaronF
4
Es scheint, dass diese Antwort, während sie funktioniert, davon ausgeht, dass sowohl das Android-Gerät als auch der Computer mit einem drahtlosen Zugangspunkt verbunden sind, was im Widerspruch zu dem steht, was der Autor zu erreichen versucht.
Jacob
2
Es ist zu beachten, dass dies nur eine Windows-Lösung ist.
dotnetCarpenter
2
Ich stimme @Jacob zu, dies beantwortet die Frage nicht. Die Frage selbst besagt, dass er sich über WLAN verbinden kann.
Bradlis7
1
Dies beantwortet die Frage nicht. Dies ist die richtige Antwort: stackoverflow.com/a/53920173/2947592
wvdz
43

Google veröffentlicht eine Lösung für diese Art von Problem hier .

Die Schritte:

  • Verbinden Sie Ihr Android-Gerät und Ihren Entwicklungscomputer mit aktiviertem USB-Debugging
  • Öffnen Sie Chrome auf Ihrem Entwicklungscomputer, öffnen Sie die neue Registerkarte, klicken Sie mit der rechten Maustaste in die neue Browserregisterkarte und klicken Sie auf "Überprüfen"
  • Klicken Sie auf das Symbol mit den drei Punkten oben rechts drei Punkte, -> Weitere Tools, Remote-Geräte.
  • Schauen Sie unten auf dem Bildschirm nach, ob Ihr Gerätename in der Liste mit dem grünen Punkt angezeigt wird.
  • Schauen Sie sich unten den Einstellungsteil an und überprüfen Sie die Markierung für die Portweiterleitung
  • Regel hinzufügen. Beispiel: Wenn Ihr Python-Webserver auf Ihrem Computer localhost: 5000 ausgeführt wird und Sie über Ihren Geräteport 3333 darauf zugreifen möchten, geben Sie 3333im linken Teil ein und geben Sie ein localhost:5000und klicken Sie auf Regel hinzufügen.
  • Voila, jetzt können Sie von Ihrem Gerät aus auf Ihren Webserver zugreifen. Öffnen Sie einen neuen Browser-Tab und besuchen Sie http: // localhost: 3333 von Ihrem Gerät aus
Alfat Saputra Harun
quelle
Funktioniert wie angegeben. Halten Sie auch die Anschlüsse an Gerät und Maschine gleich möglich :). (Nicht sicher, warum Sie einen anderen Port auf dem Gerät verwenden möchten)
Ralf de Kleine
Dies sollte die akzeptierte Antwort sein. Wenn Sie ein selbstsigniertes Zertifikat für Ihren lokalen Entwickler verwenden, müssen Sie das SSL-Protokoll auf der Registerkarte Neu hinzufügen, z . B. localhost: 5000 . Es funktioniert perfekt.
turrican_34
4
"Dieses Panel wurde zugunsten der chrome: // inspect / # -Geräteschnittstelle veraltet, die über die entsprechende Funktionalität verfügt." Fügen Sie einfach chrome://inspect/#devicesChrom ein und fahren Sie mit dem Portweiterleitungsschritt der Antwort fort.
Craastad
Ich habe gerade über eine Stunde damit verbracht, herauszufinden, wie diese Anweisungen funktionieren, ERR_EMPTY_RESPONSEwenn ich von Chrome auf dem Gerät zurückkomme ... bis mir schließlich klar wurde, dass ich meinen localhost-Server nicht auf meinem Desktop laufen ließ und nichts zu tun hatte tatsächlich verbinden mit! Doh! Startete den Server (in diesem Fall Apache) und alles begann sofort zu funktionieren. Ein wichtiger erster Schritt besteht darin, sicherzustellen, dass Ihr Zielserver tatsächlich ausgeführt wird, bevor Sie den Port Forward einrichten.
CubicleSoft
Dies ist die beste Lösung
Raul Quispe
16

Ich habe zahlreiche Foren gelesen und versucht, Apps abzuspielen, aber bis jetzt keine Lösung gefunden.

Mein Szenario ähnelt meines Erachtens Ihrem, aber ich werde es klarstellen, um anderen zu helfen. Ich habe eine lokal gehostete Website und Webdienste, die von meiner Android-Anwendung verwendet werden. Ich muss dies nur zur Demonstration mit meinem Laptop und ohne Netzwerkverbindung unterwegs haben.

Hinweis: Die Verwendung meines iPhones als WLAN-Hotspot und das Verbinden von PC und Android-Gerät hat funktioniert, aber die iPhone 4S-Verbindung ist langsam und wird regelmäßig unterbrochen.

Meine Lösung lautet wie folgt:

  • Ziehen Sie die Netzwerkkabel vom PC ab und schalten Sie das WLAN aus.
  • Schalten Sie WLAN auf dem Android-Gerät aus
  • Verbinden Sie Android über USB mit dem PC
  • Aktivieren Sie "USB Tethering" im Android-Menü. (Unter Netzwerke-> mehr ...-> Tethering und tragbarer Hotspot ")
  • Rufen Sie die IP Ihres Computers ab, die über das USB-Tether-Kabel zugewiesen wurde. (Öffnen Sie die Eingabeaufforderung und geben Sie "ipconfig" ein. Suchen Sie dann nach der IP-Adresse, die der USB-Netzwerkadapter zugewiesen hat.)
  • Öffnen Sie einen Browser auf dem PC mit der gefundenen IP-Adresse anstelle von localhost zum Testen. dhhttp://192.168.1.1/myWebSite
  • Öffnen Sie einen Browser auf dem Android und testen Sie, ob es funktioniert
John
quelle
1
Ich habe Nexus 10 und kann es nicht für mich arbeiten lassen, aber ich brauche es dringend. Keine Tethering-Option!?
Ludus H
Ich habe auch ein Problem mit Moto G5s Plus. Ich weise zu, funktioniert immer noch nicht.
Jigar Fumakiya
5

Hier ist ein Teil des Codes meiner Android-App:

Diese App kann mit einem HTTP-Get-Post-Modell zwischen einem Servlet, das auf einem Server ausgeführt wird, und einem Android-Gerät kommunizieren , das im USB-Debuggable-Modus angeschlossen ist ( da die App gerade entwickelt wird ).

Ich kann die App auch über WLAN ausführen, wenn der Server Tomcat Apache 7 ausgeführt wird ( wenn die App-Entwicklung abgeschlossen ist ).

Geben Sie hier die Bildbeschreibung ein

Um Ihre IP-Adresse zu erhalten

  1. Gehen Sie zur Eingabeaufforderung
  2. Art ipconfig
  3. Drücke Enter

In der Liste ist die IPv4-Adresse Ihre IP.

Cagcak
quelle
Das ist ungenau. Der USB-Debugg-Modus bietet weder eine Netzwerkverbindung, noch ermöglicht ADB Forwards dem Gerät, Kontakt mit dem PC aufzunehmen. Anscheinend verwenden Sie eine Netzwerkverbindung über USB, die wahrscheinlich von einem Tethering-Tool bereitgestellt wird, und kein USB-Debugging. Eine andere Möglichkeit besteht darin, ssh durch eine ADB-Weiterleitung zu tunneln.
Chris Stratton
Ich wollte nicht, dass der USB-Debug-Modus eine Netzwerkverbindung bietet. Leider war dies die einzige Möglichkeit, einige interne Befehle von einem Android-App-Projekt auf dem in Android Studio eingebetteten Webserver auszuführen. Vielen Dank für Ihre Besorgnis, es könnte für neue Entwickler verwirrend sein. Bearbeitet als App bei der Entwicklung von Fortschritten in Android Studio.
Cagcak
Hier gibt es noch keine Antwort , die eine Methode zum Erreichen der Konnektivität in diese Richtung bereitstellt. "USB-debuggable mode" macht das nicht. Ohne eine genaue Beschreibung, wie Sie es gemacht haben, gibt es hier keine Lösung .
Chris Stratton
4

Ich habe das auf einem Windows-Computer gemacht und es hat perfekt funktioniert!

Aktivieren Sie USB Tethering in Ihrem Handy. Geben Sie ipconfig in die Eingabeaufforderung Ihres Computers ein und suchen Sie die IPv4 für "Ethernet Adapter Local Area Connection x" (meistens die erste). Gehen Sie nun zu Ihrem mobilen Browser und geben Sie diese IPv4 mit der Portnummer Ihrer Webanwendung ein. zB: - 192.168.40.142:1342

Mit diesen einfachen Schritten hat es funktioniert!

Binu Jasim
quelle
4

So greifen Sie einfach auf LocalHost in einem tatsächlichen Android-Gerät zu -> Verbinden Sie Ihren PC über USB mit dem Android-Gerät

  1. Gehen Sie zur Chrome-Überprüfung und klicken Sie auf "f12" oder Strg + Umschalt + C.

Chrome Inspection Tool

  1. Überprüfen Sie die Unterseite des Chromprüfwerkzeugs.

  2. Gehen Sie nun zu den Einstellungen auf der Registerkarte Remote-Gerät.

Registerkarte Remote-Geräte

  1. Aktivieren Sie die Option "USB-Gerät erkennen" sowie die Option "Portweiterleitung".

  2. Klicken Sie nun auf Regeln hinzufügen, geben Sie einen beliebigen Geräteport ein, z. B. (4880), und geben Sie unter Lokale Adresse die tatsächliche Adresse des lokalen Hosts in meinem Fall ein, z. B. (127.0.0.1:480).

  3. Nach dem Hinzufügen der Regel gehen Sie zu Ihrem Android Studio -> in Ihrer Code-URL ( http://127.0.0.1:4880 ). Denken Sie daran, den Port von 480 -> 4880 zu ändern.

  4. Gehen Sie in Chrome zur Registerkarte Remote-Gerät und klicken Sie auf Ihr verbundenes Gerät. Neue URL hinzufügen (127.0.0.1:4880) Überprüfen Sie den Chrome-Browser für Android-Geräte

Überprüfen Sie Ihren Chrome-Browser für das tatsächliche Gerät und starten Sie das Debuggen des Codes auf dem tatsächlichen Android-Gerät.

kader hussain
quelle
1

Überprüfen Sie die Optionen für den USB-Verbindungstyp. Sie sollten einen namens "Internet Pass Through" haben. Dadurch kann Ihr Telefon dieselbe Verbindung wie Ihr PC verwenden.

codemonkey
quelle
Nur so kann ich die PC-Verbindung über USB nutzen. Für Ihr Gerät lautet die Antwort also nein. Der Simulator funktioniert, weil er die Verbindung Ihres PCs teilt.
Codemonkey
Ich weiß, dass neue HTC-Geräte mit Sense 3 die Option (Ex the Sensation) haben
codemonkey
Vielen Dank für die Hilfe. noch zu überprüfen, ob eine der Optionen funktioniert.
Saurabh
1

Johns Antwort hat mir sehr gut gefallen, aber ich möchte sie mit einigen Änderungen an denen ändern, die eine // Client-Server-Konfiguration testen möchten, indem ein Client-TCP auf dem über USB angeschlossenen Mobiltelefon und ein Server auf dem lokalen PC ausgeführt werden.

Zunächst ist es ziemlich offensichtlich, dass 10.0.2.2 nicht funktioniert, da dies ein echtes Hardware-Handy und kein Simulator ist.

Befolgen Sie also Johns Anweisungen:

  • Ziehen Sie alle Netzwerkkabel vom PC ab und schalten Sie das WLAN aus.
  • Schalten Sie WLAN auf dem Android-Gerät aus
  • Verbinden Sie das Android-Gerät über USB mit dem PC
  • Schalten Sie das "USB Tethering" (USB-Modem / USB-Mobilfunkmodem / USB שימוש כמודם סלולרי) im Android-Menü ein. (Unter Netzwerke-> mehr ...-> Tethering und tragbarer Hotspot ")

    • Diese USB-Verbindung fungiert als DHCP-Server für Ihre Einzel-PC-Verbindung, sodass Ihrem PC eine dedizierte (dynamische) IP in seinem lokalen USB-Netzwerk zugewiesen wird. Jetzt müssen Sie der Clientanwendung nur noch diese IP und diesen Port mitteilen.
  • Rufen Sie die IP Ihres PCs ab (die über das USB-Tether-Kabel zugewiesen wurde) (öffnen Sie die Eingabeaufforderung und geben Sie "ipconfig" ein. Suchen Sie dann nach der IP, die der USB-Netzwerkadapter zugewiesen hat, unter Linux ifconfigoder Ubuntus "Verbindungsinformationen" usw. ..)

  • Weisen Sie die Anwendung an, eine Verbindung zu dieser IP (dh 192.168.42.87) mit etwas wie (Java - Client-Seite) herzustellen:

    String        serverIP      = "192.168.42.87";
    int           serverPort    = 5544;
    InetAddress   serverAddress = InetAddress.getByName(serverIP);
    Socket        socket         = new Socket(serverAddress, serverPort);
    ...
    

    Genießen..

JamesC
quelle
1

Hallo, Sie können über auf Ihren xampp localhost zugreifen

  1. Bedienfeld ->
  2. Windows Defender Firewall ->
  3. Erweiterte Einstellung (auf der linken Seite) -> Eingehende Regeln -> Neue Regel -> Port -> Schreiben Sie in einen bestimmten lokalen Port Ihre Apache-Ports -> Weiter -> Weiter, dann können Sie über den lokalen PC auf Ihren lokalen Host zugreifen IP Adresse:
user3285339
quelle
0

Anschließen des Android-Telefons über ein USB-Kabel und Zugreifen auf den http-Server auf dem Computer.

  1. Firewall - Schalten Sie es aus. Sobald alles funktioniert, können Sie unter Eingehende Regeln eine Regel hinzufügen, den Apache-HTTP-Server (UDP und TCP) (oder den von Ihnen verwendeten HTTP-Server) aktivieren. Warnung - Wenn Sie die Firewall ausschalten, wird Ihr Computer anfällig zu Internetangriffen. Schalten Sie also zuerst das Internet aus und trennen Sie sich vom Netzwerk. Sie müssen nicht im Internet sein, damit dies funktioniert, da Sie zwei Geräte im lokalen Netzwerk verbinden.

  2. Stecken Sie das USB-Kabel ein. Wenn das Netzwerkfenster angezeigt wird, wählen Sie Heimnetzwerk. Wenn es nicht angezeigt wird, ist es wahrscheinlich auf Öffentlich eingestellt (was nicht funktioniert). Gehen Sie also zu: Systemsteuerung \ Netzwerk und Internet \ Netzwerk- und Freigabecenter (in Win7) und stellen Sie es dort auf Heimnetzwerk ein. Möglicherweise wird ein nächster Bildschirm angezeigt, nachdem Sie darauf gedrückt haben, um Bilder und Musik freizugeben. Klicken Sie einfach auf Abbrechen. Auf dem Hauptbildschirm ist das Heimnetzwerk weiterhin aktiv.

  3. Sie benötigen die IP des Computers, localhost oder andere Aliase funktionieren nicht. Um die IP Ihres Computers abzurufen, starten Sie die Windows-Befehlszeilen-Shell (drücken Sie Windows-Taste + R und geben Sie cmd ein). Das schwarze Eingabeaufforderungsfenster sollte angezeigt werden. Geben Sie Folgendes ein: "ipconfig" und drücken Sie die Eingabetaste. Nun suchen Sie nach

IPv4-Adresse. . . . . . . . . . . : 192.168. ###. ### Dies ist die IP, die Ihr Telefon Ihrem Computer zugewiesen hat

  1. Nun sollten Sie im Browser des Telefons versuchen, auf eine Test-HTML-Datei vom Server Ihres Computers zuzugreifen, die einwandfrei angezeigt werden soll.

  2. Jetzt, da alles funktioniert, möchten Sie wahrscheinlich die Firewall und den Internetzugang auf Ihrem Computer aktivieren. Versuchen Sie nun erneut, auf Ihren http-Server zuzugreifen. Es wird wahrscheinlich nicht funktionieren. Abhängig von Ihrem Setup wird möglicherweise ein Popup angezeigt, in dem Sie aufgefordert werden, eine Regel hinzuzufügen, um dies zuzulassen. Wenn Sie dies nicht tun, fügen Sie sie einfach selbst hinzu. Starten Sie die Windows-Firewall, gehen Sie zu Eingehende Regeln (da es sich um einen Server handelt) und fügen Sie eine neue Regel hinzu. Wählen Sie "Programm". Suchen Sie die Exe Ihres http-Servers und stellen Sie im nächsten Bildschirm sicher, dass Zulassen ausgewählt ist. Versuchen Sie erneut, eine Verbindung herzustellen, und jetzt sollte es funktionieren. Wenn nicht, liegt es wahrscheinlich daran, dass Sie eine falsche Exe ausgewählt haben. Sie können sogar noch weiter gehen, um die Nutzung von außen einzuschränken (da jetzt jeder im Internet darauf zugreifen kann, wenn er Ihre Internet-IP-Adresse hat). Um den Zugriff einzuschränken, können Sie mit der rechten Maustaste auf die neue Regel klicken, die Sie gerade erstellt haben.

    Hinweis für Android-Entwickler, jetzt in Ihrem Android-Code müssen Sie "http: //" verwenden, sonst funktioniert es nicht. Zum Beispiel: MyAsyncTask.execute ("http://192.168.123.123/test.html")

Teil II - IP auf fest / statisch einstellen.

Jetzt, da die Dinge funktionieren, ändert sich Ihre IP jedes Mal, wenn Sie das Kabel abziehen und wieder einstecken. Und wenn Sie es irgendwo wie in einem Code verwenden, müssen Sie es jedes Mal aktualisieren! Die Lösung, die ich mir ausgedacht habe, besteht darin, die IP auf statisch zu setzen.

  1. Wenn das Telefon verbunden und angebunden ist, kehren Sie zum Netzwerk- und Freigabecenter zurück und klicken Sie auf die LAN-Verbindung "Verbindungen:".

Bildschirmfoto

  1. Wählen Sie im nächsten Bildschirm Eigenschaften aus, markieren Sie IP 4, drücken Sie dort auf Eigenschaften und klicken Sie auf "Folgende IP-Adresse verwenden".
  2. Setzen Sie das Standard-Gateway und die Subnetzmaske genau so ein, wie es in der ipconfig war, und ändern Sie für die IP-Adresse nur die letzten 3 Ziffern in 1 bis 255

Bildschirmfoto

Diese IP-Adresse ist Ihre neue feste / statische IP-Adresse und bleibt beim nächsten Anschließen des Telefons unverändert.

Emil
quelle
0
  1. Stellen Sie sicher, dass adb auf dem Computer installiert ist , das USB-Debugging auf dem Telefon aktiviert ist und das Telefon Zugriff auf den Computer gewährt hat. Schließen Sie das Telefon über ein USB-Kabel an den Computer an und stellen Sie sicher, dass es sichtbar ist (es sollte im Befehl Bash angezeigt werden adb devices.
  2. Öffnen Sie im Chrome-Browser Ihres Computers chrome: // inspect / # -Geräte , klicken Sie auf die Schaltfläche "Portweiterleitung", aktivieren Sie "Portweiterleitung aktivieren" und fügen Sie den Port des Computers hinzu, auf den Sie über das Telefon zugreifen möchten ( detaillierte Anweisungen) Hier ). Sie müssen die Registerkarte mit den Chrome: // inspect / # -Geräten geöffnet lassen.
  3. Navigieren Sie im Browser Ihres Telefons zu localhost: [port_number], und es sollte alles angezeigt werden, was auf dem Computer ausgeführt wird.

Dies funktioniert unter Windows und Ubuntu Linux und sollte auch unter Mac funktionieren.

Josh
quelle