Как получить доступ к localhost с моего устройства Android?

Я могу получить доступ к моему веб-серверу ноутбука с помощью эмулятора Android, я использую 10.0.2.2:portno хорошо работать.

но когда я подключаю свой реальный телефон Android, браузер телефона не может подключиться к тому же веб-серверу на моем ноутбуке. Телефон подключен к ноутбуку с помощью кабеля USB. Если я управляю команда adb devices, я вижу свой телефон.

что я упустил?

30 ответов


USB не обеспечивает сеть для мобильных устройств.

если ваш рабочий стол и телефон подключены к одному и тому же WiFi (или любая другая локальная сеть), затем используйте IP-адрес рабочего стола, назначенный маршрутизатором (не localhost, а не 127.0.0.1).

чтобы узнать IP-адрес вашего рабочего стола:

  • введите в командную строку ipconfig (Windows) или ifconfig (Unix)
    • на Linux однострочныйifconfig | grep "inet " | grep -v 127.0.0.1 дадут важные вещи
    • здесь куча предложений о том, как иметь аналогичный выход на Windows
  • там будет куча IP-адресов
  • попробуйте все из них (кроме вышеупомянутого localhost и 127.0.0.1)

если ваш телефон подключен к мобильной сети, тогда все будет сложнее.

либо идти хардкор:

  • сначала выяснить внешний IP-адрес маршрутизатора (https://www.google.de/search?q=myip)
  • затем, на маршрутизаторе, перенаправьте некоторый порт в <your desktop IP>:<server port number>
  • наконец, используйте внешний IP-адрес и перенаправленный порт

в противном случае используйте что-то вроде xip.Ио или сайту ngrok.


Это очень просто.

включите WiFi Hotspot вашего телефона/маршрутизатора Android и подключите ноутбук к телефону.

запустите сервер на localhost (я использую WAMP server)

теперь откройте командную строку и введите команду ipconfig команда вы получите следующие вещи

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

скопировать 192.168.43.76 в вашем мобильном браузере.

Примечание: пожалуйста, установите сеть как "домашняя сеть". Настройка домашней сети означает, что ваш компьютер может делиться вещами с другими устройствами в той же сети. Если вы используете Windows 10 перейдите к WiFi > сетевые свойства сети > сделать компьютер обнаруживаемым.


пользователи mac osx

я добился успеха, включив удаленное управление:

  1. убедитесь, что ваш phone and laptop are connected to the same wifi network
  2. на mac перейдите в system preferences/sharing
  3. enable remote management

вы увидите сообщение, подобное этому

другие пользователи могут управлять компьютером с помощью адреса some.url.com

на вашем android устройстве теперь вы должны иметь возможность ударить some.url.com, который делегирует к localhost на вашем mac. Вы также можете использовать ifconfig чтобы получить ip вашего macbook


портативное решение с ngrok (любая ОС с узлом или npm)

если вы не против выставить свой проект с временным доменом, вы можете использовать ngrok. Допустим у меня есть приложение, которое работает на localhost:9460

npm install ngrok -g
ngrok http 9460

это даст мне:

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

теперь я могу дотянуться https://f7c23d14.ngrok.io как способ удаленного просмотра localhost. Это отлично подходит для обмена проектной работы или прогресса с клиентами


альтернативное решение с nginx proxy pass

если вы используете что - то подобное через nginx proxy_pass, это потребует немного большей настройки-это хакерский подход, но он работает для меня, и я открыт для предложений по его улучшению:

  • включить удаленное управление (как указано выше)
  • временно установите сервер для прослушивания порта 81 в отличие от 80
  • sudo nginx -s reload
  • посетить http://youripaddress:81

``

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

перезагрузить и посетить http://youripaddress:81


Я нашел быстрое решение этой проблемы. Попробуйте это ссылке. Это должно помочь вам решить проблему.

Я изменил только одну вещь, где в учебнике говорится, что вы меняете "127.0.0.1" на "все", измените его на IP-адрес, на котором работает ваш сервер.

после этого вы сможете подключиться к своему localhost.


Ниже приведена (корректура) копия информации со связанной страницы:

шаг 1

установите сервер Wamp (или любой другой, который вы предпочитаете).

Это один из лучших серверов, которые я знаю, чтобы настроить локальный сервер. Если вы установили Apache или любой другой сервер, игнорировать этот шаг.

Загрузите и установите WAMP Server отсюда.

Шаг 2

добавить новое правило для порта 80 в Брандмауэре Windows.

  1. Откройте Панель управления и выберите Windows Брандмауэр.

  2. выберите Дополнительные параметры на левой панели страницы настройки брандмауэра Windows.

  3. выберите входящие правила на левой панели, затем выберите новое правило.

  4. выберите порт и нажмите кнопку Далее.

  5. выберите переключатель" определенные локальные порты " и введите 80 в качестве значения порта.

  6. разрешить соединение без изменений и перейти к следующему шаг.

  7. сохранить параметры профиля без изменений и нажмите кнопку Далее.

  8. дайте хорошее имя вашему новому правилу и нажмите кнопку Готово.

Это позволит порт 80 доступ к локальной сети IP.

Шаг 3

отредактируйте httpd.conf-файл сервера Wamp для исправления ошибки 403.

нужно отредактировать этот файл. В противном случае мы получим 403 запрещенную ошибку при доступе к localhost через IP локальной сети.

  1. нажмите на иконку WAMP Server tray.

  2. открыть подменю сервера Apache.

  3. Выберите файл httpd.conf.

  4. найдите этот раздел конфигурации в httpd.файл conf:

    Directory “c:/wamp/www/”
    #
    # Possible values for the Options directive are “None”, “All”,
    # or any combination of:
    # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that “MultiViews” must be named *explicitly* — “Options All”
    # doesn’t give it to you.
    #
    # The Options directive is both complicated and important. Please see
    # http://httpd.apache.org/docs/2.2/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks
    
    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be “All”, “None”, or any combination of the keywords:
    # Options FileInfo AuthConfig Limit
    #
    AllowOverride all
    
    #
    # Controls who can get stuff from this server.
    #
    
    # onlineoffline tag – don’t remove
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
    

найдите и замените ‘127.0.0.1 ' на 'All', сохраните файл и перезапустите сервер Wamp.

Шаг 4

найти своего локальной IP-сети.

  1. открыть командную строку.

  2. Введите и введите


на ПК с Windows вам, возможно, не нужно ничего делать, кроме как узнать свой IPv4-адрес с помощью команды "ipconfig".

  • Шаг 1: Подключите телефон к ПК с помощью USB-кабеля.
  • Шаг 2: используйте команду "ipconfig", чтобы узнать ваш IPv4-адрес (внешний IP маршрутизатора) e.g 192.168.1.5 в моем случае.
  • Шаг 3: Просто откройте "192.168.1.5: 8080" из Вашего браузера телефона. Работает !

Другие Детали Env : Windows 7, Google Nexus 4 (4.2.2), Сервер Tomcat, Приложение Grails.

вы также должны убедиться, что у вас есть разрешение на доступ к интернету в файле AndroidManifest:

<uses-permission android:name="android.permission.INTERNET"/>

С простым решением (просто доступ laptop_ip_addr:port С мобильного устройства, когда мобильный и ноутбук находятся на одном WiFi), я получаю учтите, ошибка. То есть мой MacBook, похоже, отказывается от попытки подключения с моего мобильного телефона.


ADB обратный сокет (только для Android)

данное решение работает для меня (протестировано с MacBook):

  1. подключите мобильное устройство Android с USB-кабелем к ноутбук
  2. включить Отладка USB мобильные устройства
  3. на ноутбуке, запустите adb reverse tcp:4000 tcp:4000
    • использовать свой собственный номер порта вместо 4000
  4. теперь, на мобильном устройстве, вы можете перейти к http://localhost:4000/, и он будет фактически подключаться к ноутбуку, а не к мобильному устройству

инструкции здесь.

недостатком является то, что это работает только с один мобильное устройство в то время. Если вы хотите получить доступ к другому мобильному устройству, сначала отключите первое (disable Отладка USB), подключите новый (включить Отладка USB), и работать adb reverse tcp:4000 tcp:4000 снова.


ngrok (работает со всеми устройствами)

другое решение, которое всегда должно работать, -сайту ngrok (как уже упоминалось в других ответов). Он работает через Интернет, а не через локальную сеть.

он чрезвычайно прост в использовании:

brew cask install ngrok
ngrok http 4000

это выводит, среди некоторой другой информации, строку типа

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

теперь вы можете перейти к http://4cc5ac02.ngrok.io на любом устройстве, подключенном к Интернету, и этот URL ведет на localhost:4000 вашего ноутбука.

обратите внимание, что пока команда ngrok запущена (пока вы не нажмете Ctrl-C), ваш проект публично служил. Все, у кого есть URL, могут видеть он.


однако есть гораздо лучшее решение. Вы можете получить доступ к хост-машине с IP-адресом "10.0.2.2". Это было разработано таким образом командой Android. Таким образом, ваш веб-сервер может отлично работать на localhost, и из вашего приложения Android вы можете получить к нему доступ через "http://10.0.2.2:8080".


поскольку это старый вопрос, есть новый способ сделать это, который действительно очень прост. Скачать расширение ADB Chrome и далее:

https://developers.google.com/chrome-developer-tools/docs/remote-debugging


"переадресация портов на Chrome для Android позволяет легко протестировать ваш сайт разработки на мобильном телефоне. Он работает, создавая прослушивающий TCP-порт на мобильном устройстве, который сопоставляется с определенным TCP-портом на вашем компьютере разработки. Трафик между этими портами проходит через USB, поэтому подключение не зависит от конфигурации сети."

подробнее здесь:https://developer.chrome.com/devtools/docs/remote-debugging#port-forwarding


возможно, ваш веб-сервер прослушивает ваш интерфейс loopback, а не сетевой интерфейс. Основные признаки этого:

  • хиты 127.0.0.1 и localhost (из localhost или эмулятора Android) работа
  • хиты 192.168.xxx.xxx не работает, будь то из localhost, LAN или WAN

Я больше говорю о диагностике этого и исправлении этого в ответе здесь.


запустите CMD от имени администратора

и на экране CMD введите команду ipconfig и появится экран с текстом

Как это фото enter image description here

и вы можете получить доступ к localhost с помощью этого ip вы должны быть подключены к той же сети, что и компьютер, подключенный к


попробуйте перейти к этому файлу: C:\wamp\bin\apache\Apache2.2.11\conf\httpd.conf

#   onlineoffline tag - don't remove
    Order Deny,Allow
    Allow from all // change it Deny
    Allow from 127.0.0.1

и измените 10.0.2.2 на свой IP-адрес.


наконец-то сделано в Ubuntu, я запускаю сервер nodejs на localhost: 8080

1) открытый тип терминала ifconfig вы получите ip что-то вроде этого : inet addr:192.168.43.17

2) теперь просто поместите url-адрес, как это : "192.168.43.17:8080" (порт 8080, поступающий из номера порта localhost) пример: "192.168.43.17: 8080 / fetch"


Я использовал этот процесс:

  • установить Саша на ПК
  • настройка ПК и Android устройства после этих отличная инструкция
  • просто перейдите в браузер на устройстве Android и введите http://ipv4 - ... скрипач для доступа к localhost

обратите внимание, что этот процесс требует изменения настроек WiFi на устройстве Android в начале и конце каждой сессии. Я нашел это менее болезненно после укоренения устройства Android.


прежде всего подключите телефон и компьютер к общему wifi.

затем откройте командную строку, используя run as administrator

дайте команду ipconfig

который показывает беспроводной lan ip

используйте IP:порт вашего сервера для доступа в телефоне


более простой способ по умолчанию localhost-использовать http://localhost:port. Это работает в ноутбуке и Android, а также.

если он не работает, то в android установите IP-адрес по умолчанию вашего телефона в 127.0.0.1: port:)

откройте терминал и введите: -

 hostname -i
 #127.0.0.1
 hostname -I
 #198.168.*.*

прежде всего сделайте ваш IP-адрес машины(где работает сервер)статическим. Введите статический IP-адрес в коде Android. Затем перейдите к интерфейсу вашего wifi-маршрутизатора и проверьте левую панель. Вы увидите такую опцию, как переадресация/переадресация портов. Нажмите на него и переадресуйте порт 80. Теперь отредактируйте свой htttpd.conf файл и отредактируйте его для

разрешить все

. Перезапустите сервер. Все должно работать нормально.

дополнительно вы можете зарезервировать IP адрес вашей машины так, чтобы она всегда выделялась вам. В левой панели интерфейса маршрутизатора найдите DHCP -> Address Reservation, нажмите на нее. Введите MAC-адрес компьютера и IP-адрес, указанный в коде. Нажмите кнопку Сохранить. Это зарезервирует данный IP-адрес для вашего компьютера.


решение для подключения моего мобильного устройства к моему серверу wamp на основе моего ноутбука:

во-первых, wifi не является маршрутизатором. Поэтому для подключения мобильного устройства к серверу wamp на основе localhost на моем ноутбуке мне нужен маршрутизатор. Я загрузил и установил бесплатный виртуальный маршрутизатор:https://virtualrouter.codeplex.com/

настройка очень проста:

  1. правой кнопкой мыши на значок виртуального маршрутизатора в системе Лоток
  2. нажмите настроить виртуальный маршрутизатор
  3. введите пароль
  4. если подключение к интернету находится в ethernet, выберите общее подключение: Ethernet
  5. затем установите wifi на свой ноутбук и устройство
  6. на устройстве подключитесь к сетевому имени виртуального маршрутизатора

затем вы можете подключиться к ноутбуку через устройство, запустив браузер и заполнить IPV4-адрес вашего ноутбука (чтобы найти его в windows, введите cmd: ipconfig и найдите адрес ipv4)

вы должны увидеть домашнюю страницу сервера wamp.


столкнулся с этой проблемой, используя несколько разных серверов localhost. Наконец, получил мое приложение и работает на телефоне в считанные секунды, просто используя простой сервер Python. Это займет всего несколько секунд, поэтому стоит попробовать, прежде чем переходить к более сложным решениям. Во-первых, убедитесь, что у вас установлен Python. cmd+r и типа python или $ python --version в терминале mac.

следующий:

cd <your project root>

$ python -m SimpleHTTPServer 8000

тогда просто найдите адрес вашей хост-машины на сеть, я использовал System Preferences/Sharing на Mac, чтобы найти его. Нажмите, что в вашем Android устройстве и должны загрузить ваш index.html и вы должны быть хорошо.

если нет, то проблема в чем-то другом, и вы можете посмотреть на некоторые другие предлагаемые решения. Удачи!

* EDIT*

еще одно быстрое решение, чтобы попробовать, если вы используете Chrome является веб-сервер для расширения Chrome. Я нашел быстрый и очень простой способ получить доступ к localhost на моем телефон. Просто убедитесь, что проверить Accessible to local network под Options и он должен работать на вашей камере без каких либо проблем.

enter image description here


сайту ngrok позволяет поместить localhost на временный сервер и очень прост в настройке. Я предоставил здесь некоторые шаги, которые можно найти по ссылке:

  1. скачать ngrok zip по ссылке выше
  2. открыть zip
  3. запустить сервер локально и обратите внимание на номер порта
  4. в терминале перейдите в папку, где живет ngrok, и введите ngrok http [port number]

вы увидите маленькую приборную панель в вашем терминал с адресом, указывающим на локальный. Укажите приложение на этот адрес и создайте его на своем устройстве.


хотя один ответ был принят, но это сработало для меня:

  1. убедитесь, что ваш компьютер и Android-устройство находятся в одной сети.
  2. получить IP-адрес вашего компьютера. (в случае типа mac ifconfig внутри терминала и искать en0/en1 -> inet это должно быть что-то вроде 19*.16*.1.4.) (в windows используйте `ipconfig)
  3. Откройте настройки мобильного телефона и перейдите в сеть - > длительное нажатие сети wifi - > изменить сеть - > прокрутите вниз до advanced Параметры - > выберите proxy manual и в proxy hostname введите свой адрес, т. е. 19*.16*.1.4 внутренний порт введите свой порт. и сохраните его.

  4. искать what is my ip в google chrome и получите свой ip, скажем, это 1**.1**.15*.2**

  5. попробуйте доступа 1**.1**.15*.2**:port/ С вашего мобильного устройства.

это так просто, как это.


это то, что сработало для меня, я добавил еще одну строку после 127.0.0.1 ip, чтобы указать точный ip-адрес локальной сети (не публичный ip-адрес) устройства, которое я хотел использовать. В моем случае мой Samsung Galaxy S3

как предложено Bangptit редактировать httpd.conf-файл (x - номера версий): C:\wamp\bin\apache\Apache2.X. x\conf\httpd.conf

найдите тег onlineoffline и добавьте ip-адрес своего телефона (я нашел ip-адрес своих телефонов в своих маршрутизаторах страницы конфигурации):

тег onlineoffline-не удалять

 Order Deny,Allow
 Deny from all
 Allow from 127.0.0.1

мои телефоны IP в строке ниже

 Allow from 192.168.1.65 
 Allow from ::1
 Allow from localhost

можно было бы расширить это, чтобы включить весь поддомен, например, 192.168.1.0 / 24 и т. д.


самый простой способ (это сработало безупречно для меня) - локально разместить свой сайт на 0.0.0.0:<port_no> и для доступа к нему с помощью мобильных устройств используйте <local_ipv4_address>:<port_no>/<path> в браузер.

  • чтобы узнать ваш локальный ipv4-адрес, просто введите ipconfig в cmd
  • любое устройство, подключенное к той же сети, может получить доступ к этому url.

сайту ngrok - лучшее решение. Если вы разрабатываете PHP, я рекомендую установить Фреймворк Laravel Услуга, Он имеет версии MacOS и Linux, тогда вы можете использовать . Если вы разрабатываете какие-либо технологии frontend и вам нужно поделиться портом, таким как 3000, используйте ngrok напрямую ngrok http 3000


использовать connectify и xampp или эквивалент и введите ip-адрес в строке мобильного URL для доступа


лично я не настаиваю на использовании localhost при использовании устройства, нет простого решения.

просто начните игру, где вы подключаетесь к localhost, где вы можете использовать эмулятор. Любая информация, которую вы должны получить от устройства, может быть сгенерирована с легкостью и может быть отправлена в activity в качестве параметра.


Что сработало для меня (цель: отладка приложения Windows server, работающего на localhost:99999 из клиентского приложения, работающего на телефоне android )

  1. телефон и ПК подключены к одной сети 192.168.1.хxxx (подключен через wifi в моем случае)
  2. включить порт 99999 в Брандмауэре windows
  3. запуск в cmd от имени администратора: netsh http add urlacl url=http://*: 99999 / user=Everyone

затем url приложения службы (my_dev_machine_ip:99999/path_to_service) был доступен с телефона.


добавление решения для будущих разработчиков.

скопируйте адрес вашего ip-адреса. щелкните правой кнопкой мыши по вашей сети - > сеть и общий доступ - > нажмите на соединение, которое у вас есть в настоящее время-> детали-> тогда адрес рядом с ipv4-адресом-ваш ip-адрес, запишите это где-нибудь

перейдите в Панель управления - > Система и безопасность -> Брандмауэр windows -> Дополнительные настройки -> входящие правила -> новые правила (выполните шаги, чтобы добавить порт e.g 80, его действительно просто следуйте)

поместите свой ip-адрес, который вы записали в браузере телефона,и номер порта, для которого вы создали правило. е.г 192.168.0.2:80 и вала.

возможное решение, если оно не соединяется. щелкните правой кнопкой мыши сеть - >открыть сеть и общий доступ - > посмотрите под видом активных соединений, под именем вашего соединения на тип соединения и нажмите на него, если он является общедоступным, и убедитесь, что изменить его на домашнюю сеть.


его очень просто, - командная строка GOTO (Window + R [type cmd]) - тип ipconfig , который покажет текущий IP-адрес вашего ПК-напишите taht IP-адрес в браузере вашего телефона Android с :80 e.g (http://192.168.X. x: 80)

сделал

localhost появится на вашем телефоне


использование USB-кабеля:

(например, если вы используете WAMP server):

1) установите драйверы Android на свой компьютер и загрузите portable Android Привязывать Обратный Инструмент и подключите устройство Android через обратное применение инструмента.

2) Нажмите на значок WAMP > Put Online (после перезапуска).

3) Откройте свой IP в браузере Android (т. е. http://192.168.1.22 или http://164.92.124.42 )

чтобы найти локальный IP-адрес, нажмите Пуск>Выполнить>cmd и типа команду ipconfig и ваш IP-адрес будет отображаться в выходных данных.

вот и все. Теперь вы можете получить доступ (открыть) localhost с Android.