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

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

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

Что мне не хватает?

384

33 ответа

Решение

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

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

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

  • введите в командной строке ipconfig (Windows) или ifconfig (Unix)
    • на линуксе однострочник 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-адрес и перенаправленный порт

В противном случае используйте что-то вроде http://xip.io/ или ngrok.

271

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

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

Запустите свой сервер на локальном хосте (я использую сервер wamp)

Теперь откройте командную строку и введите команду 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 > Свойства сети текущей сети> Сделать этот компьютер доступным для обнаружения.

170

пользователи 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

На вашем андроид устройстве теперь вы сможете нажать 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

47

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

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

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


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

Шаг 1

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

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

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

Шаг 2

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

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

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

  3. Выберите Inbound Rules на левой панели, затем выберите New Rule.

  4. Выберите Порт и нажмите Далее.

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

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

  7. Оставьте параметры профиля без изменений и нажмите "Далее".

  8. Дайте какое-нибудь красивое имя вашему новому правилу и нажмите Готово.

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

Шаг 3

Отредактируйте файл httpd.conf сервера Wamp, чтобы исправить ошибку 403.

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

  1. Нажмите на иконку Wamp сервера в трее.

  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" на "Все", сохраните файл и перезапустите сервер Wamp.

Шаг 4

Найдите свой локальный сетевой IP.

  1. Откройте командную строку.

  2. Введите и введите ipconfig команда.

  3. В моем случае мой адрес локальной сети - 10.0.0.2.

Это IP-адрес, который вам нужен для доступа к локальному хосту на вашем телефоне Android через Wi-Fi. Чтобы проверить, работает ли он, введите этот IP-адрес в браузере на рабочем столе, где установлен сервер localhost. Браузер должен отобразить вашу локальную страницу успешно. Это гарантирует, что этот локальный сетевой IP-адрес теперь успешно доступен на вашем телефоне Android.

Я надеюсь, что этот урок поможет вам получить доступ к локальному хосту через Wi-Fi.

32

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

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

Другие подробности Env: Windows 7, Google Nexus 4 (4.2.2), Tomcat Server, приложение Grails.

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

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

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


Обратное гнездо ADB (только для Android)

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

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

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

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


нгрок (работает со всеми устройствами)

Другим решением, которое всегда должно работать, является 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, может это увидеть.

26

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

11

Поскольку это старый вопрос, есть новый способ сделать это, действительно очень простой. Загрузите расширение ADB Chrome и следуйте этим инструкциям:

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

11

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

Более подробная информация здесь: https://developer.chrome.com/devtools/docs/remote-debugging

6

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

  • Хиты на 127.0.0.1 а также localhost (с локального хоста или эмулятора Android)
  • Хиты на 192.168.xxx.xxx не работают, будь то с локального хоста, локальной сети или глобальной сети

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

5

Попробуйте перейти к этому файлу: 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-адрес.

4

Наконец, сделано в Ubuntu, я запускаю сервер nodejs на локальном хосте: 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"

4

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

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

как это фото введите описание изображения здесь

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

4

Прежде всего подключите ваш телефон и компьютер к общему Wi-Fi.

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

Дать команду ipconfig

Который показывает беспроводной LAN IP

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

2

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

  • Установите Fiddler на ПК
  • Настройте ПК и устройство Android, следуя этим превосходным инструкциям
  • Просто зайдите в браузер на устройстве Android и введите http://ipv4.fiddler, чтобы получить доступ к localhost

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

2

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

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

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

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

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

Следующий:

cd <your project root>

$ python -m SimpleHTTPServer 8000

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

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

* РЕДАКТИРОВАТЬ *

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

1

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

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

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

1

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

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

  4. ищи what is my ip в Google Chrome, и получите свой IP, скажем, это 1**.1**.15*.2**

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

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

1

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

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

Настроить это действительно просто:

  1. щелкните правой кнопкой мыши значок виртуального маршрутизатора в системном трее
  2. нажмите на Настроить виртуальный маршрутизатор
  3. заполните пароль
  4. если ваше интернет-соединение в сети Ethernet, выберите Shared connection: Ethernet
  5. Затем включите Wi-Fi на своем ноутбуке и устройстве
  6. На вашем устройстве подключитесь к виртуальному роутеру по сетевому имени

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

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

1

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

  • Чтобы узнать свой локальный IPv4-адрес, просто введите ipconfig в cmd
  • ЛЮБОЕ устройство, подключенное к той же сети, может получить доступ к этому URL.
1

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

Разрешить от всех

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

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

1

Используйте это в вашем Ubuntu/Macbook, чтобы получить IP-адрес вашей системы. Ваш мобильный телефон и система должны быть в одной сети

ip addr | grep inet Это даст вам IP-адрес, который выглядит как 192.168.168.46, Используя это в вашем смартфоне.

Надеюсь это поможет.

1

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

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

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

онлайн оффлайн тег - не удалять

 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 и т. Д.

1

Ngrok - лучшее решение. Если вы разрабатываете PHP, я рекомендую установить Laravel Valet, он имеет версии для MacOS и Linux, тогда вы можете использовать valet share команда. Если вы разрабатываете какой-либо внешний интерфейс и вам нужен общий порт, например, 3000, используйте напрямую ngrok ngrok http 3000

1

Что сработало для меня (цель: отладка приложения на сервере Windows, работающего на локальном хосте: 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) был доступен с телефона.

0

Вышеуказанное не сработало для меня. Это сделано для Mac:

В терминале:

ifconfig

Затем возьмите число после inet и поместите его в свой мобильный браузер:

введите описание изображения здесь

0

Использование connectify а также xampp или эквивалентный, и введите IP-адрес в строке мобильного URL для доступа

0

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

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

0

Если вы работаете в Linux, это работает для меня

sudo iptables -F
0
Другие вопросы по тегам