866 Stimmen

Wie kann ich von meinem Android-Gerät auf meinen lokalen Host zugreifen?

Ich kann mit dem Android-Emulator auf den Webserver meines Laptops zugreifen, ich verwende 10.0.2.2:portno funktioniert gut.

Aber wenn ich mein echtes Android-Telefon anschließe, kann der Telefonbrowser keine Verbindung mit demselben Webserver auf meinem Laptop herstellen. Das Telefon ist über ein USB-Kabel mit dem Laptop verbunden. Wenn ich den Befehl adb devices ausführe, kann ich mein Telefon sehen.

Was übersehe ich?

5 Stimmen

0 Stimmen

Siehe Dokumentation hier : developer.Android.com/tools/devices/

5 Stimmen

Schalten Sie die Firewall aus, während Sie Ihre Webseite testen, oder fügen Sie Ihre IP-Adresse in den Firewall-Einstellungen zu den vertrauenswürdigen Netzwerken hinzu.

656voto

Ilya Saunkin Punkte 17444

USB stellt dem mobilen Gerät kein Netzwerk zur Verfügung.

Wenn sowohl Ihr Desktop als auch Ihr Telefon mit demselben WiFi verbunden sind (oder ein anderes lokales Netzwerk), dann verwenden Sie die vom Router zugewiesene IP-Adresse Ihres Desktops (nicht localhost und nicht 127.0.0.1 ).

So finden Sie die IP-Adresse Ihres Desktops heraus:

  • in die Befehlszeile eingeben ipconfig (Windows) oder ifconfig (Unix)
    • unter Linux der Einzeiler ifconfig | grep "inet " | grep -v 127.0.0.1 wird nur die wichtigen Informationen liefern
    • gibt es eine ein Bündel von Vorschlägen wie man eine ähnliche Ausgabe unter Windows erreichen kann
  • wird es eine Reihe von IP's geben
  • probieren Sie alle aus (mit Ausnahme des oben erwähnten localhost y 127.0.0.1 )

Wenn Ihr Telefon mit dem Mobilfunknetz verbunden ist dann wird es noch schwieriger werden.

Entweder du gehst zum Hardcore:

  • Finden Sie zunächst die externe IP-Adresse Ihres Routers heraus ( https://www.google.de/search?q=myip )
  • Dann leiten Sie auf dem Router einen Port an <your desktop IP>:<server port number>
  • schließlich die externe IP-Adresse und den weitergeleiteten Port verwenden

Andernfalls verwenden Sie etwas wie xip.io o ngrok .

ANMERKUNG : Die ifconfig Befehl wurde veraltet und fehlt daher standardmäßig unter Debian Linux, beginnend mit Debian Stretch. Die neue und empfohlene Alternative für die Untersuchung einer Netzwerkkonfiguration unter Debian Linux ist der Befehl ip. Um zum Beispiel den Befehl ip zu verwenden, um eine Netzwerkkonfiguration anzuzeigen, führen Sie Folgendes aus:

ip address

Der obige ip-Befehl kann abgekürzt werden zu:

ip a

Wenn Sie trotzdem lieber die ifconfig als Teil Ihrer täglichen Systemadministrationsroutine, können Sie es einfach als Teil des net-tools paquete.

apt-get install net-tools

Referenz ist aquí

0 Stimmen

Danke, das war eine große Hilfe für mich. Das Problem für mich war, dass ich nicht wusste, dass der lokale Apache-Server über die IP 10.0.2.2. adressiert werden kann... Ich habe viele andere IP-Adressen ausprobiert, wie z.B. die, die ipconfig anzeigt etc. Aber nochmals vielen Dank!

6 Stimmen

Ich verstehe die Lösung dieses Problems nicht. Können Sie mir helfen, wie mein Telefon auf meinen Server zugreifen kann? Ich hoffe, Sie können mir diese Lösung näher bringen. Danke!

0 Stimmen

Danke, es funktioniert, aber ich kann auf dem realen Gerät nicht auf den virtuellen Host zugreifen. Mein virtueller Host ist raw.local.com

362voto

Dhiral Pandya Punkte 9709

Es ist eigentlich ganz einfach.

  • Schalten Sie den WiFi-Hotspot Ihres Android-Handys/Routers ein und verbinden Sie Ihr Laptop mit Ihrem Telefon
  • Starten Sie Ihren Server unter localhost (Ich verwende WAMP-Server für Windows)
  • Öffnen Sie nun die Eingabeaufforderung und geben Sie ein

    ipconfig

Wenn Sie das getan haben, sehen Sie etwa Folgendes:

Wireless LAN adapter Wireless Network Connection:
  Connection-specific DNS Suffix  . :
  Link-local IPv6 Address . . . . . : fe80::80bc:e378:19ab:e448%11
  IPv4 Address. . . . . . . . . . . : 192.168.43.76
  Subnet Mask . . . . . . . . . . . : 255.255.255.0
  Default Gateway . . . . . . . . . : 192.168.43.1
  • Kopieren Sie die IPv4-Adresse (in diesem Fall ist es 192.168.43.76 )
  • Fügen Sie in Ihrem mobilen Browser einfach die IPv4-Adresse ein

Anmerkung: Bitte stellen Sie Ihr Netzwerk als " Heimnetzwerk ". Die Einstellung des Netzwerks als Heimnetzwerk bedeutet, dass Sie Ihrem PC erlauben, Daten mit anderen Geräten im selben Netzwerk auszutauschen.

Wenn Sie Windows 10 verwenden, können Sie dies wie folgt tun:

  • Öffnen Sie Einstellungen
  • Gehe zu Netzwerk und Internet
  • Wählen Sie WiFi im linken Menü
  • Tippen Sie auf den Namen des verbundenen WiFi
  • Setzen Sie die Netzwerk-Profil des Netzes zu sein Privat

Wenn Sie ein Problem haben, liegt es höchstwahrscheinlich an der Windows-Firewall.

  • Öffnen Sie Bedienfeld
  • Gehe zu Windows Defender-Firewall
  • Tippen Sie auf Eine Anwendung oder Funktion über die Windows Defender Firewall zulassen
  • Prüfen Sie, ob die App aktiviert ist für Privat Netzwerke (es sollte ein Häkchen vorhanden sein)
  • Wenn es sich no aktiviert, tippen Sie auf Einstellungen ändern und markieren Sie das Kontrollkästchen unter Privat für die App

47 Stimmen

Hm, ich habe das getan, aber der Browser scheint ewig zu brauchen, um zu laden, und gibt mir dann ein "oops"? mache ich etwas falsch? Und was meinen Sie mit Heimnetzwerk?

18 Stimmen

Bitte denken Sie daran, auch die Firewall im Computer zu deaktivieren.

4 Stimmen

*Home Network it is (: Heimnetzwerk bedeutet, dass Ihr Computer Dinge mit den Geräten des gleichen Netzwerks teilen darf.

303voto

weibeld Punkte 11560

Mit der einfachen Lösung (einfach auf laptop_ip_addr:port vom mobilen Gerät aus, wenn Handy und Laptop mit demselben WiFi verbunden sind), erhalte ich eine ERR_CONNECTION_REFUSED Fehler. Das heißt, mein MacBook scheint den Verbindungsversuch von meinem Handy aus abzulehnen.


ADB-Umkehrsockel (nur Android)

Diese Lösung Werke für mich (getestet mit einem MacBook):

  1. Android-Mobilgerät mit USB-Kabel an Laptop anschließen
  2. Aktivieren Sie USB-Fehlersuche auf mobilem Gerät
  3. Führen Sie auf dem Laptop adb reverse tcp:4000 tcp:4000
    • Verwenden Sie Ihre eigene Anschlussnummer anstelle von 4000
  4. Auf dem mobilen Gerät können Sie nun zu folgender Adresse navigieren http://localhost:4000/ und es wird tatsächlich eine Verbindung mit dem Laptop hergestellt, nicht mit dem mobilen Gerät.

Siehe Anweisungen aquí .

Der Nachteil ist, dass dies nur mit einer ein einzelnes mobiles Gerät nach dem anderen . Wenn Sie mit einem anderen mobilen Gerät zugreifen möchten, müssen Sie zunächst die Verbindung zum ersten Gerät trennen (deaktivieren USB-Fehlersuche ), verbinden Sie den neuen (aktivieren Sie USB-Fehlersuche ), und führen Sie adb reverse tcp:4000 tcp:4000 wieder.

EDIT: Es wurde berichtet, dass diese Lösung auch unter Windows funktioniert.


ngrok (funktioniert mit allen Geräten)

Eine andere Lösung, die immer funktionieren sollte, ist ngrok (wie in anderen Antworten erwähnt). Es funktioniert über das Internet und nicht über das lokale Netzwerk.

Es ist extrem einfach zu bedienen:

brew cask install ngrok
ngrok http 4000

Dies gibt neben einigen anderen Informationen eine Zeile wie

Forwarding                    http://4cc5ac02.ngrok.io -> localhost:4000

Jetzt können Sie zu folgenden Seiten navigieren http://4cc5ac02.ngrok.io auf jedem Gerät, das mit dem Internet verbunden ist, und diese URL leitet weiter zu localhost:4000 Ihres Laptops.

Beachten Sie, dass, solange der Befehl ngrok läuft (bis Sie auf Ctrl-C ), ist Ihr Projekt öffentlich serviert. Jeder, der die URL hat, kann sie sehen.

10 Stimmen

Du hast mein Leben gerettet, Kumpel

3 Stimmen

Ich danke Ihnen. Sie haben mir sehr geholfen. Ich habe adb Reverse nur ersetzen 4000 Port zu 3000 und es funktionierte wie ich brauchte.

0 Stimmen

Ngrok war das, was für mich unter Linux funktionierte, super einfach, aber jedes Mal, wenn Sie es gibt Ihnen eine andere url, die alle 2 Stunden abläuft

105voto

lfender6445 Punkte 29514

Mac OS X Benutzer

Dies habe ich erreicht, indem ich Folgendes aktiviert habe Fernverwaltung :

  • Vergewissern Sie sich, dass Ihr Telefon und Ihr Laptop mit dem Internet verbunden sind. dieselbe WiFi-Netzwerk
  • Auf dem Mac gehen Sie zu System preferences/sharing
  • Aktivieren der Fernverwaltung

Sie erhalten eine ähnliche Meldung wie die folgende:

  • Andere Benutzer können Ihren Computer über die Adresse verwalten some.url.com

Auf Ihrem Android-Gerät sollten Sie nun in der Lage sein, zu some.url.com die delegiert an localhost auf Ihrem Mac. Sie können auch Folgendes verwenden ifconfig um die IP-Adresse Ihres Macs zu ermitteln.


Tragbare Lösung mit ngrok (jedes Betriebssystem mit Node.js)

Wenn es Ihnen nichts ausmacht, Ihr Projekt mit einer temporären Domain auszustellen, können Sie ngrok . Sagen wir, ich habe eine Anwendung, die auf localhost:9460 Ich kann einfach schreiben

npm install ngrok -g

ngrok http 9460

Das wird mir helfen:

Session Status                online
Update                        update available (version 2.2.8, Ctrl-U to update)
Version                       2.2.3
Region                        United States (us)
Web Interface                 http://127.0.0.1:4040
Forwarding                    http://f7c23d14.ngrok.io -> localhost:9460
Forwarding                    https://f7c23d14.ngrok.io -> localhost:9460

Connections                   ttl     opn     rt1     rt5     p50     p90
                              0       0       0.00    0.00    0.00    0.00

Ich kann jetzt erreichen https://f7c23d14.ngrok.io als eine Möglichkeit, aus der Ferne zu sehen localhost . Diese Funktion eignet sich hervorragend, um Kunden über Entwurfsarbeiten oder Fortschritte zu informieren.


Alternative Lösung mit nginx Proxy-Pass

Wenn Sie etwas wie dieses über nginx proxy_pass Das ist ein etwas umständlicher Ansatz, aber für mich funktioniert er, und ich bin offen für Verbesserungsvorschläge:

  • Aktivieren der Fernverwaltung (wie oben erwähnt)

  • Den Server vorübergehend so einstellen, dass er auf Port 81 im Gegensatz zu 80

  • Geben Sie den folgenden Befehl ein:

    sudo nginx -s reload

  • Besuchen Sie http://youripaddress:81

    server { listen 80; listen 81; # <-------- add this to expose the app on a unique port server_name ~^(local|local.m).example.com$;

    ...

    }

Neu laden und besuchen http://youripaddress:81

2 Stimmen

Wenn Sie diese "Fernverwaltungs"-Einrichtung verwenden, ist es außerdem hilfreich zu wissen, dass Ihr mobiles Gerät (das über USB angeschlossen ist) Ihnen nur Zugriff auf den ersten <VirtualHost> gewährt, der in der Datei httpd-vhosts.conf definiert ist, so dass Sie Ihr aktuelles Projekt einfach an den Anfang der Liste verschieben können

0 Stimmen

Ich habe die Fernverwaltung auf meinem Mac aktiviert, wie Sie gesagt haben, und mir wurde eine weitere Reihe von Kontrollkästchen für verschiedene Möglichkeiten angezeigt, wie mein Computer fernverwaltet werden kann. Ich habe sie alle deaktiviert, außer Beobachten, und es hat gut funktioniert. Mein Webserver lief auf meinem Mac unter localhost port 5555, und ich sah "andere Benutzer können Ihren Computer über die Adresse 10.0.0.12 verwalten", also gab ich im Browser meines Telefons 10.0.0.12:5555 ein und sah meine Webseite.

0 Stimmen

Es funktionierte, wenn die IP verwendet wurde 192.168.0.101 aber der Hostname hat nicht funktioniert.

99voto

Ajmal Ansari Punkte 716

Diese Lösung kann verwendet werden, wenn sich Ihr mobiles Gerät und Ihr Computer nicht im selben Netzwerk befinden:

In diesem Fall müssen Sie die Portweiterleitung verwenden. Im Inspektionsfenster von Google Chrome (chrome://inspect) können Sie die angeschlossenen Geräte sehen. enter image description here

Klicken Sie auf die Schaltfläche "Port fowading" und setzen Sie einen zufälligen Port, z. B. 3000, auf den Port, den Ihr Laptop verwendet, z. B. 8080.

enter image description here

Verwenden Sie nun localhost:3000 vom Gerät aus, um auf localhost:8080 (oder_wasauchimmer_ip:portno) im Laptop zuzugreifen. Sie können dies im mobilen Browser überprüfen. Versuchen Sie localhost:3000 im mobilen Browser. Stellen Sie sicher, dass das Kontrollkästchen "Portweiterleitung aktivieren" im Fenster "Einstellungen für Portweiterleitung" aktiviert ist.

1 Stimmen

Ich liebe dich, Kumpel! Sie müssen ein Tutorial mit diesen Schritten zu schreiben!

3 Stimmen

Sehr schöne Lösung. Dies sollte die akzeptierte Antwort sein

2 Stimmen

Ich kann gar nicht in Worte fassen, wie sehr Sie mir mit dieser Lösung gerade die Seele gerettet haben

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X