Как я могу получить доступ к своему локальному хосту с моего устройства Android?
Я могу получить доступ к веб-серверу моего ноутбука с помощью эмулятора Android, я использую 10.0.2.2:portno
работает хорошо.
Но когда я подключаю свой настоящий телефон Android, браузер телефона не может подключиться к тому же веб-серверу на моем ноутбуке. Телефон подключен к ноутбуку с помощью USB-кабеля. Если я запускаю команду adb devices, я вижу свой телефон.
Что мне не хватает?
45 ответов
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.
Это очень просто.
Включите 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 > Свойства сети текущей сети> Сделать этот компьютер доступным для обнаружения.
С простым решением (просто доступ laptop_ip_addr:port
с мобильного устройства, когда мобильный телефон и ноутбук подключены к одному и тому же Wi-Fi), я получаю ошибку ERR_CONNECTION_REFUSED. То есть мой MacBook, похоже, отказывается от попытки подключения с моего мобильного телефона.
Обратное гнездо ADB (только для Android)
Это решение работает для меня (проверено на MacBook):
- Подключите мобильное устройство Android с помощью USB-кабеля к ноутбуку
- Включить отладку по USB на мобильном устройстве
- На ноутбуке беги
adb reverse tcp:4000 tcp:4000
- Используйте свой пользовательский номер порта вместо
4000
- Используйте свой пользовательский номер порта вместо
- Теперь на мобильном устройстве вы можете перейти к
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, может это увидеть.
пользователи Mac OSX
я добился успеха, включив удаленное управление:
- убедитесь, что ваш
phone and laptop are connected to the same wifi network
- на Mac, перейдите к
system preferences/sharing
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
Это решение можно использовать, когда ваше мобильное устройство и компьютер не находятся в одной сети:
В этом случае вам необходимо использовать переадресацию портов. В окне проверки Google Chrome (chrome://inspect) вы можете увидеть подключенные устройства.
Нажмите на кнопку выбора порта и установите случайный порт, скажем 3000, на порт, который использует ваш ноутбук, например, 8080.
теперь используйте localhost:3000 с устройства для доступа к localhost:8080(or_whatever_ip:portno) на портативном компьютере. Вы можете проверить это в мобильном браузере. Попробуйте localhost:3000 в мобильном браузере. Обязательно установите флажок "Включить переадресацию портов" в окне "Настройки переадресации портов".
На ПК с 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"/>
Я нашел быстрое решение этой проблемы. Попробуйте эту ссылку. Это должно помочь вам решить проблему.
Я изменил только одну вещь, где в руководстве говорится, что вы меняете "127.0.0.1" на "Все", вместо этого меняйте его на IP-адрес, на котором работает ваш сервер.
После этого вы сможете подключиться к локальному хосту.
Ниже (корректура) копия информации со связанной страницы:
Шаг 1
Установите сервер Wamp (или любой другой, который вы предпочитаете).
Это один из лучших серверов, которые я знаю для настройки локального сервера. Если вы установили Apache или любой другой сервер, пропустите этот шаг.
Загрузите и установите Wamp Server отсюда.
Шаг 2
Добавьте новое правило для порта 80 в брандмауэре Windows.
Откройте панель управления и выберите "Брандмауэр Windows".
Выберите Дополнительные параметры на левой панели страницы настроек брандмауэра Windows.
Выберите Inbound Rules на левой панели, затем выберите New Rule.
Выберите Порт и нажмите Далее.
Выберите переключатель "Определенные локальные порты" и введите 80 в качестве значения порта.
Оставьте Разрешить соединение без изменений и перейдите к следующему шагу.
Оставьте параметры профиля без изменений и нажмите "Далее".
Дайте какое-нибудь красивое имя вашему новому правилу и нажмите Готово.
Это позволит доступ к порту 80 по локальной сети IP.
Шаг 3
Отредактируйте файл httpd.conf сервера Wamp, чтобы исправить ошибку 403.
Нам нужно отредактировать этот файл. В противном случае мы получим ошибку 403 при доступе к локальному хосту через IP-адрес локальной сети.
Нажмите на иконку Wamp сервера в трее.
Откройте подменю сервера Apache.
Выберите httpd.conf.
Найдите этот раздел конфигурации в файле 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.
Откройте командную строку.
Введите и введите
ipconfig
команда.В моем случае мой адрес локальной сети - 10.0.0.2.
Это IP-адрес, который вам нужен для доступа к локальному хосту на вашем телефоне Android через Wi-Fi. Чтобы проверить, работает ли он, введите этот IP-адрес в браузере на рабочем столе, где установлен сервер localhost. Браузер должен отобразить вашу локальную страницу успешно. Это гарантирует, что этот локальный сетевой IP-адрес теперь успешно доступен на вашем телефоне Android.
Я надеюсь, что этот урок поможет вам получить доступ к локальному хосту через Wi-Fi.
Однако существует гораздо лучшее решение. Вы можете получить доступ к хост-машине с IP-адресом "10.0.2.2". Это было разработано таким образом командой Android. Таким образом, ваш веб-сервер может отлично работать на локальном хосте, и из вашего приложения для 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
Решение для Windows:
Вы не можете просматривать свой веб-сайт, главным образом потому, что ваш брандмауэр (брандмауэр ОС по умолчанию или брандмауэр антивируса) предотвращает входящие соединения.
В брандмауэре Windows:
Чтобы разрешить входящие соединения на определенных портах, перейдите по ссылке:
Панель управления> Брандмауэр Защитника Windows> Дополнительные настройки> Щелкните правой кнопкой мыши Правила для входящих подключений> Добавить новое правило.
Затем:
- Установите переключатель "Порт".
- Введите конкретный порт / диапазон, на котором вы хотите разрешить входящие соединения (порт, на котором работает ваш сервер)
- Установите переключатель "Разрешить соединение".
- Нажмите Далее (если вы не хотите изменить значения по умолчанию)
- Дайте своему правилу имя и нажмите Готово.
Заметка:
Если вы используете антивирус с брандмауэром, то описанные выше шаги не будут работать, поскольку антивирус отключит брандмауэр Windows и вместо этого запустит собственный брандмауэр.
В этом случае, в зависимости от антивирусной программы, перейдите в настройки брандмауэра вашего антивируса и откройте порт.
Запустите CMD от имени администратора
и на экране CMD введите ipconfig и на экране появится текст
как это фото
и вы можете получить доступ к вашему локальному хосту с помощью этого IP-адреса, вы должны быть подключены к той же сети, что и ваш компьютер
Если вы используете настоящее устройство и по-прежнему сталкиваетесь с проблемой, выполните следующие действия, поскольку эти шаги помогают мне решить проблему:
- Убедитесь, что мобильное устройство и ноутбук находятся в одной сети Wi-Fi.
- убедитесь, что ваш целевой URL имеет номер порта, примерно так:
https://localhost:44301
- запустите эту команду в терминале Android Studio,
adb reverse tcp:44301 tcp:44301
- заменять
44301
с вашимport number
Надеюсь, вы сможете работать без каких-либо проблем.
Happy codding
Ngrok позволяет вам разместить ваш локальный хост на временном сервере и очень прост в настройке. Я предоставил некоторые шаги здесь, которые можно найти по ссылке:
- Скачайте ngrok zip по ссылке выше
- Откройте почтовый индекс
- Запустите ваш сервер локально и запомните номер порта
- В терминале, перейдите в папку, где живет ngrok и введите
ngrok http [port number]
Вы увидите небольшую панель управления в своем терминале с адресом, указывающим на ваш локальный хост. Направьте ваше приложение на этот адрес и создайте его на своем устройстве.
Используйте это в вашем Ubuntu/Macbook, чтобы получить IP-адрес вашей системы. Ваш мобильный телефон и система должны быть в одной сети
ip addr | grep inet
Это даст вам IP-адрес, который выглядит как 192.168.168.46
, Используя это в вашем смартфоне.
Надеюсь это поможет.
Наконец, сделано в 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"
Попробуйте перейти к этому файлу: 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-адрес.
Возможно, ваш веб-сервер прослушивает ваш петлевой интерфейс, а не сетевой интерфейс. Основные признаки этого:
- Хиты на
127.0.0.1
а такжеlocalhost
(с локального хоста или эмулятора Android) - Хиты на
192.168.xxx.xxx
не работают, будь то с локального хоста, локальной сети или глобальной сети
Я больше говорю о диагностике и исправлении в ответе здесь.
Самый простой способ использовать localhost по умолчанию - использовать http://localhost:port. Это работает в ноутбуке и Android, а также.
Если это не работает, то в Android установите IP-адрес вашего телефона по умолчанию 127.0.0.1:port:)
Откройте терминал и введите:-
hostname -i
#127.0.0.1
hostname -I
#198.168.*.*
Я использовал этот процесс:
- Установите Fiddler на ПК
- Настройте ПК и устройство Android, следуя этим превосходным инструкциям
- Просто зайдите в браузер на устройстве Android и введите http://ipv4.fiddler, чтобы получить доступ к localhost
Обратите внимание, что этот процесс требует от вас изменения настроек WiFi на устройстве Android в начале и в конце каждого сеанса. Я нашел это менее болезненным, чем рутирование моего устройства Android.
Самый простой способ (это сработало для меня безупречно) - локально разместить ваш сайт на 0.0.0.0:<port_no>
и для доступа к нему с помощью мобильных устройств, используйте <local_ipv4_address>:<port_no>/<path>
в браузере.
- Чтобы узнать свой локальный IPv4-адрес, просто введите
ipconfig
в cmd - ЛЮБОЕ устройство, подключенное к той же сети, может получить доступ к этому URL.
Ngrok - лучшее решение. Если вы разрабатываете PHP, я рекомендую установить Laravel Valet, он имеет версии для MacOS и Linux, тогда вы можете использовать valet share
команда. Если вы разрабатываете какой-либо внешний интерфейс и вам нужен общий порт, например, 3000, используйте напрямую ngrok ngrok http 3000
Работал с этой проблемой, используя несколько разных локальных серверов. Наконец-то я запустил приложение и запустил его на телефоне за считанные секунды, просто используя простой сервер 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
и это должно работать на вашей камере без каких-либо проблем.
Это то, что работало для меня, я добавил еще одну строку после 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 и т. Д.
Решение для подключения моего мобильного устройства к серверу Wamp на основе моего ноутбука:
Во-первых, Wi-Fi не маршрутизатор. Поэтому, чтобы подключить мое мобильное устройство к серверу wamp на базе локального хоста на моем ноутбуке, мне нужен маршрутизатор. Я скачал и установил бесплатный виртуальный маршрутизатор: https://virtualrouter.codeplex.com/
Настроить это действительно просто:
- щелкните правой кнопкой мыши значок виртуального маршрутизатора в системном трее
- нажмите на Настроить виртуальный маршрутизатор
- заполните пароль
- если ваше интернет-соединение в сети Ethernet, выберите Shared connection: Ethernet
- Затем включите Wi-Fi на своем ноутбуке и устройстве
- На вашем устройстве подключитесь к виртуальному роутеру по сетевому имени
Затем вы можете подключиться к вашему ноутбуку через ваше устройство, запустив браузер и заполнить IPV4-адрес вашего ноутбука (чтобы найти его в Windows, введите cmd: ipconfig и найдите адрес ipv4)
Вы должны увидеть домашнюю страницу вашего сервера wamp.
Прежде всего подключите ваш телефон и компьютер к общему Wi-Fi.
Затем откройте командную строку, используя запуск от имени администратора
Дать команду ipconfig
Который показывает беспроводной LAN IP
Используйте ip: порт вашего сервера для доступа в телефон
Хотя один ответ был принят, но это сработало для меня:
- Убедитесь, что ваш компьютер и устройство Android находятся в одной сети.
- получить IP-адрес вашего компьютера. (в случае типа Mac
ifconfig
внутри терминала и искатьen0/en1 -> inet
это должно быть что-то вроде19*.16*.1.4
.) (в Windows используйте `ipconfig) Откройте настройки вашего мобильного телефона и перейдите в сеть-> нажмите и удерживайте вашу сеть Wi-Fi-> измените сеть -> прокрутите вниз до расширенных параметров -> выберите руководство прокси-сервера и в имени хоста прокси введите свой адрес, т.е.
19*.16*.1.4
внутри порта введите свой порт. и сохрани это.ищи
what is my ip
в Google Chrome, и получите свой IP, скажем, это1**.1**.15*.2**
- попробуйте получить доступ
1**.1**.15*.2**:port/
с вашего мобильного устройства.
Это так просто, как это.
Просто. Прежде всего, убедитесь, что ваше устройство Android и компьютер подключены к одной и той же сети. Например, маршрутизатор. Откройте командную строку с помощью Windows+R и найдите cmd, затем откройте. В команде введите ipconfig и получите адрес ipv4.
NB: брандмауэр блокирует доступ вашего компьютера по сети, поэтому вам необходимо отключить брандмауэр для сети, будь то общедоступная или частная.
Как отключить брандмауэр Откройте панель управления> Система и безопасность> Брандмауэр Windows> на левой панели выберите включить и выключить брандмауэр Windows. > Затем выберите отключить брандмауэр Windows (не рекомендуется)
Вы сделали
затем откройте мобильное устройство и запустите свой IP-адрес 192.168.1.xxx
Прежде всего, сделайте вашу машину (где работает сервер) статическим IP-адресом. Введите этот статический IP-адрес в код Android. Затем перейдите к интерфейсу вашего Wi-Fi роутера и проверьте левую панель. Вы увидите такую опцию, как переадресация / переадресация портов. Нажмите на него и перешлите порт 80. Теперь отредактируйте ваш htttpd.conf
файл и редактировать его для
Разрешить от всех
, Перезагрузите ваш сервер. Теперь все должно работать нормально.
Кроме того, вы можете зарезервировать IP-адрес вашей машины, чтобы он всегда был выделен вам. В левой панели интерфейса вашего роутера найдите DHCP -> Address Reservation
, нажмите здесь. Введите MAC-адрес вашего устройства и IP-адрес, который вы ввели в коде. Нажмите на сохранить. Это зарезервирует указанный IP-адрес для вашей машины.
Добавление решения для будущих разработчиков.
Скопируйте адрес вашего IP-адреса. щелкните правой кнопкой мыши на своей сети -> сеть и обмен -> нажмите на соединение, которое у вас есть в данный момент -> подробности-> тогда адрес рядом с адресом ipv4 - это ваш IP-адрес, запишите это где-нибудь
Перейдите в панель управления -> Система и безопасность -> Брандмауэр Windows -> Расширенные настройки -> Входящие правила -> Новые правила (следуйте инструкциям по добавлению порта, например, 80, его очень просто соблюдать)
рядом с ним укажите свой IP-адрес, который вы записали, в браузере телефона и номер порта, для которого вы создали правило. например, 192.168.0.2:80 и Wala.
Возможное решение, если оно не подключается. щелкните правой кнопкой мыши сеть-> открыть сеть и общий доступ-> посмотрите в списке ваших активных подключений, под названием вашего подключения тип подключения и щелкните его, если он общедоступный, и обязательно измените его на домашнюю сеть.