Как получить доступ к 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
- на Linux однострочный
- там будет куча 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
я добился успеха, включив удаленное управление:
- убедитесь, что ваш
phone and laptop are connected to the same wifi network
- на mac перейдите в
system preferences/sharing
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.
Откройте Панель управления и выберите Windows Брандмауэр.
выберите Дополнительные параметры на левой панели страницы настройки брандмауэра Windows.
выберите входящие правила на левой панели, затем выберите новое правило.
выберите порт и нажмите кнопку Далее.
выберите переключатель" определенные локальные порты " и введите 80 в качестве значения порта.
разрешить соединение без изменений и перейти к следующему шаг.
сохранить параметры профиля без изменений и нажмите кнопку Далее.
дайте хорошее имя вашему новому правилу и нажмите кнопку Готово.
Это позволит порт 80 доступ к локальной сети IP.
Шаг 3
отредактируйте httpd.conf-файл сервера Wamp для исправления ошибки 403.
нужно отредактировать этот файл. В противном случае мы получим 403 запрещенную ошибку при доступе к localhost через IP локальной сети.
нажмите на иконку WAMP Server tray.
открыть подменю сервера 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 ' на 'All', сохраните файл и перезапустите сервер Wamp.
Шаг 4
найти своего локальной IP-сети.
открыть командную строку.
Введите и введите
на ПК с 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):
- подключите мобильное устройство Android с USB-кабелем к ноутбук
- включить Отладка USB мобильные устройства
- на ноутбуке, запустите
adb reverse tcp:4000 tcp:4000
- использовать свой собственный номер порта вместо
4000
- использовать свой собственный номер порта вместо
- теперь, на мобильном устройстве, вы можете перейти к
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 и появится экран с текстом
Как это фото
и вы можете получить доступ к 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/
настройка очень проста:
- правой кнопкой мыши на значок виртуального маршрутизатора в системе Лоток
- нажмите настроить виртуальный маршрутизатор
- введите пароль
- если подключение к интернету находится в ethernet, выберите общее подключение: Ethernet
- затем установите wifi на свой ноутбук и устройство
- на устройстве подключитесь к сетевому имени виртуального маршрутизатора
затем вы можете подключиться к ноутбуку через устройство, запустив браузер и заполнить 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
и он должен работать на вашей камере без каких либо проблем.
сайту ngrok позволяет поместить localhost на временный сервер и очень прост в настройке. Я предоставил здесь некоторые шаги, которые можно найти по ссылке:
- скачать ngrok zip по ссылке выше
- открыть zip
- запустить сервер локально и обратите внимание на номер порта
- в терминале перейдите в папку, где живет ngrok, и введите
ngrok http [port number]
вы увидите маленькую приборную панель в вашем терминал с адресом, указывающим на локальный. Укажите приложение на этот адрес и создайте его на своем устройстве.
хотя один ответ был принят, но это сработало для меня:
- убедитесь, что ваш компьютер и Android-устройство находятся в одной сети.
- получить IP-адрес вашего компьютера. (в случае типа mac
ifconfig
внутри терминала и искатьen0/en1 -> inet
это должно быть что-то вроде19*.16*.1.4
.) (в windows используйте `ipconfig) Откройте настройки мобильного телефона и перейдите в сеть - > длительное нажатие сети wifi - > изменить сеть - > прокрутите вниз до advanced Параметры - > выберите proxy manual и в proxy hostname введите свой адрес, т. е.
19*.16*.1.4
внутренний порт введите свой порт. и сохраните его.искать
what is my ip
в google chrome и получите свой ip, скажем, это1**.1**.15*.2**
- попробуйте доступа
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 )
- телефон и ПК подключены к одной сети 192.168.1.хxxx (подключен через wifi в моем случае)
- включить порт 99999 в Брандмауэре windows
- запуск в 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.