Доступ к локальному хосту ПК с мобильного устройства Android, подключенного через USB

86

У меня есть устройство Android (вкладка Samsung galaxy), подключенное к моему компьютеру через USB.

Я хочу использовать WebServices и запустить веб-страницу, которая находится на моем локальном сервере xampp моего ПК на моем устройстве Android.

Я могу добиться этого, если у меня есть и мой компьютер, и устройство Android, подключенные к одной беспроводной сети.

Однако возможно ли получить доступ к странице localhost без какого-либо беспроводного подключения, используя только USB-соединение.

(PS: тот же сценарий работает, когда я запускаю приложение на эмуляторе и использую ip 10.0.2.2 для доступа к локальному хосту на моем ПК)

саураб
источник
Воспользуйтесь приведенной ниже ссылкой stackoverflow.com/questions/4779963/… У меня это сработало.
1
Отключите брандмауэр во время тестирования своей веб-страницы или добавьте свой IP-адрес в доверенные сети в настройках брандмауэра.
zeeali
ознакомьтесь с этим блогом mycodingchannel.in/blog/… для подробностей
kontashi35

Ответы:

34

Я наконец решил эту проблему. Я использовал Samsung Galaxy S с Froyo. «Порт» ниже - это тот же порт, который вы используете для эмулятора (10.0.2.2:port). Что я сделал:

  1. сначала подключите реальное устройство с помощью USB-кабеля (убедитесь, что вы можете загрузить приложение на свое устройство)
  2. получить IP-адрес от подключаемого устройства, который начинается с 192.168.xx: порт
  3. откройте «Центр управления сетями и общим доступом»
  4. нажмите «Подключение по локальной сети» на устройстве и выберите «Подробности».
  5. скопируйте "IPv4-адрес" в свое приложение и замените его следующим образом: http://192.168.x.x:port/test.php
  6. загрузите свое приложение (снова) на свое реальное устройство
  7. зайдите в свойства и включите "USB-модем"
  8. запустите ваше приложение на устройстве

Теперь он должен работать.

Живичс Санел
источник
Если я сделаю это, я получу исключение неизвестного хоста.
AaronF
4
Кажется, что этот ответ, хотя и работает, предполагает, что устройство Android и компьютер подключены к точке беспроводного доступа, что противоречит тому, чего пытается достичь автор.
Джейкоб
2
Следует отметить, что это решение только для Windows.
dotnetCarpenter
2
Я согласен с @Jacob, это не отвечает на вопрос. Сам вопрос гласит, что он может подключиться по вайфаю.
bradlis7
1
Это не отвечает на вопрос. Это правильный ответ: stackoverflow.com/a/53920173/2947592
wvdz
44

Google опубликовал решение для такого рода проблемы здесь .

Шаги:

  • Подключите устройство Android и машину для разработки с включенной отладкой по USB.
  • Откройте Chrome на своем компьютере для разработки, откройте новую вкладку, щелкните правой кнопкой мыши новую вкладку браузера, нажмите кнопку «Проверить»
  • Щелкните значок с тремя точками справа вверху три точки, -> Дополнительные инструменты, Удаленные устройства.
  • Посмотрите на нижнюю часть экрана и убедитесь, что имя вашего устройства отображается в списке с зеленой точкой.
  • Посмотрите ниже на часть настроек, отметьте отметку Port forwarding
  • Добавить правило. Например, если ваш веб-сервер python запущен на вашем компьютере localhost: 5000 и вы хотите получить к нему доступ через порт 3333 вашего устройства, вы набираете 3333в левой части, печатаете localhost:5000и нажимаете добавить правило.
  • Вуаля, теперь вы можете получить доступ к своему веб-серверу со своего устройства. Попробуйте открыть новую вкладку браузера и перейдите по адресу http: // localhost: 3333 со своего устройства.
Альфат Сапутра Харун
источник
Работает как рекламируется. Также можно оставить порты на устройстве и машине одинаковыми :). (Не уверен, почему вы хотите использовать другой порт на устройстве)
Ральф де Кляйн
Это должен быть принятый ответ. Если вы используете самозаверяющий сертификат для своего локального разработчика, не забудьте добавить протокол SSL на вкладке New, например localhost: 5000 . Работает отлично.
turrican_34
4
«Эта панель устарела и заменена интерфейсом chrome: // inspect / # devices, который имеет эквивалентную функциональность». Так что просто вставьте chrome://inspect/#devicesхром и перейдите к шагу ответа по переадресации порта .
craastad
Я просто потратил больше часа, пытаясь выяснить, как заставить эти инструкции работать с ERR_EMPTY_RESPONSEвозвратом из Chrome на устройстве ... пока я, наконец, не понял, что я не запускаю свой локальный сервер на своем рабочем столе и что мне нечего на самом деле подключиться к! Дох! Запустил сервер (в данном случае Apache), и все сразу заработало. Первый важный шаг - убедиться, что ваш целевой сервер действительно работает, прежде чем настраивать переадресацию порта.
CubicleSoft
это лучшее решение
Рауль Киспе
16

Я читал множество форумов и пробовал играть в приложения, но до сих пор не нашел решения.

Я считаю, что мой сценарий похож на ваш, но я уточню, чтобы помочь другим. У меня есть локальный веб-сайт и веб-службы, которые будут использоваться моим приложением для Android. Мне нужно, чтобы это работало в дороге для демонстрации только с моим ноутбуком и без подключения к сети.

Примечание. Использование моего iPhone в качестве точки доступа Wi-Fi и подключение моего компьютера и устройства Android работало, но соединение iPhone 4S медленное и регулярно прерывалось.

Мое решение таково:

  • Отключите сетевые кабели от ПК и выключите Wi-Fi.
  • Отключите Wi-Fi на устройстве Android
  • Подключите android к ПК через USB
  • Включите «USB-модем» в меню Android. (В разделе "Сети-> подробнее ...-> Модем и переносная точка доступа")
  • Получите IP-адрес вашего компьютера, назначенный кабелем USB-модема. (откройте командную строку и введите «ipconfig», затем найдите IP-адрес, назначенный сетевым адаптером USB)
  • Для проверки откройте браузер на ПК, используя найденный IP-адрес вместо localhost. т.е.http://192.168.1.1/myWebSite
  • Откройте браузер на андроиде и проверьте его работу
Джон
источник
1
У меня есть Nexus 10, и я не могу заставить его работать, но он мне очень нужен. Нет возможности модема !?
Ludus H
У меня тоже проблема в moto g5s plus. Назначаю пока не получается.
Джигар Фумакия 01
5

Вот фрагмент кода моего приложения для Android:

Это приложение способно взаимодействовать с моделью получения-сообщения HTTP между сервлетом, работающим на сервере, и устройством Android, подключенным в режиме USB-Debuggable ( поскольку приложение находилось в процессе разработки ).

Я также могу запустить приложение через Wi-Fi, когда сервер Tomcat Apache 7 работает ( когда разработка приложения была завершена ).

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

Чтобы получить свой IP-адрес

  1. Перейти в командную строку
  2. Тип ipconfig
  3. Нажмите Enter

В списке IPv4-адрес - это ваш IP-адрес.

Cagcak
источник
Это неточно. Режим отладки USB не обеспечивает подключение к сети, и переадресация ADB не позволяет устройству связываться с ПК. Судя по всему, вы используете сетевое соединение через USB, скорее всего, предоставляемое инструментом привязки, а не отладкой по USB. Другой вариант - туннелировать ssh через ADB вперед.
Крис Стрэттон,
Я не имел в виду, что режим USB-отладки обеспечивает сетевое соединение. Но, к сожалению, это был единственный способ выполнить некоторые внутренние команды, поступающие из проекта приложения Android на веб-сервер, встроенный в Android Studio. Спасибо за беспокойство, это может сбить с толку новых разработчиков. Отредактировано как приложение в процессе разработки в Android Studio.
cagcak
Здесь все еще нет ответа, предлагающего способ достижения связи в этом направлении. «USB-отлаживаемый режим» этого не делает, поэтому без точного описания того, как вы это сделали, здесь нет решения .
Крис Стрэттон,
4

Я сделал это на компьютере с Windows, и он отлично сработал!

Включите USB-модем на своем мобильном телефоне. Введите ipconfig в командной строке на вашем компьютере и найдите ipv4 для «подключения к локальной сети адаптера Ethernet x» (в основном, первого). Теперь перейдите в свой мобильный браузер, введите этот ipv4 с номером порта вашего веб-приложения. например: - 192.168.40.142:1342

Эти простые шаги сработали!

Бину Джасим
источник
4

Как легко получить доступ к LocalHost на реальном устройстве Android -> Подключите компьютер к устройству Android через USB

  1. Перейдите к осмотру Chrome, нажмите 'f12' или Control + Shift + C

Инструмент проверки Chrome

  1. Проверьте нижнюю часть хромированного инструмента.

  2. Теперь перейдите в настройки на вкладке «Удаленное устройство».

Вкладка удаленных устройств

  1. отметьте опцию «Обнаружить USB-устройство», а также отметьте опцию «Перенаправление портов».

  2. Теперь нажмите «Добавить правила», введите любой порт устройства, например (4880), и в поле «Локальный адрес» введите фактический адрес локального хоста в моем случае, например (127.0.0.1:480).

  3. После добавления правила перейдите в свою студию Android -> внутри URL-адреса вашего кода ( http://127.0.0.1:4880 ). Не забудьте изменить порт с 480 на 4880.

  4. Перейдите на вкладку «Удаленное устройство» в Chrome и щелкните подключенное устройство. Добавить новый URL (127.0.0.1:4880) Проверить браузер Chrome на устройстве Android

Проверьте свой браузер Chrome на фактическом устройстве и начните отладку кода на устройстве Actual Android.

Кадер Хуссейн
источник
1

Проверьте параметры типа USB-подключения. У вас должен быть один под названием «Сквозной Интернет». Это позволит вашему телефону использовать то же соединение, что и ваш компьютер.

Codemonkey
источник
Это единственный известный мне способ использовать подключение к ПК через USB. Так что для вашего устройства, я думаю, ответ отрицательный. Симулятор работает, потому что он использует соединение с вашим компьютером.
codemonkey
Я знаю, что у новых устройств HTC с Sense 3 есть опция (Ex the Sensation)
codemonkey
Большое спасибо за помощь . еще, чтобы проверить, работает ли какой-либо из вариантов.
saurabh
1

Мне очень понравился ответ Джона, но я хотел бы дать его с некоторыми изменениями тем, кто хочет протестировать некоторую конфигурацию клиента // сервера, запустив клиентский TCP на мобильном устройстве, подключенном к USB, и сервер на локальном ПК.

Во-первых, совершенно очевидно, что 10.0.2.2 не будет работать, потому что это НАСТОЯЩИЙ аппаратный мобильный телефон, а не симулятор.

Итак, следуйте инструкциям Джона:

  • Отключите все сетевые кабели от ПК и выключите Wi-Fi.
  • Отключите Wi-Fi на устройстве Android
  • Подключите устройство Android к ПК через USB
  • Включите «USB-модем» (USB-модем / USB-модем для сотовой связи / USB שיוש כמודם סלולרי) в меню Android. (В разделе "Сети-> подробнее ...-> Модем и переносная точка доступа")

    • Это USB-соединение будет действовать как DHCP-сервер для вашего единственного подключения к ПК, поэтому оно назначит вашему ПК выделенный (динамический) IP-адрес в своей локальной сети USB. Теперь все, что вам нужно сделать, это сообщить клиентскому приложению этот IP-адрес и порт.
  • Получите IP-адрес своего ПК (который был назначен кабелем USB-модема) (откройте командную строку и введите «ipconfig», затем найдите IP-адрес, назначенный сетевым адаптером USB, в Linux его ifconfigили Ubuntu «Информация о подключении» и т. Д. ..)

  • Сообщите приложению, что нужно подключиться к этому IP-адресу (например, 192.168.42.87) с помощью чего-то вроде (Java - на стороне клиента):

    String        serverIP      = "192.168.42.87";
    int           serverPort    = 5544;
    InetAddress   serverAddress = InetAddress.getByName(serverIP);
    Socket        socket         = new Socket(serverAddress, serverPort);
    ...
    

    Наслаждаться..

ДжеймсК
источник
1

Здравствуйте, вы можете получить доступ к своему локальному хосту xampp с помощью

  1. Панель управления ->
  2. брандмауэр защитника Windows ->
  3. Предварительная настройка (слева) -> Правила для входящих подключений -> Новое правило -> Порт -> в конкретном локальном порту напишите свои порты Apache -> далее -> затем, затем вы можете получить доступ к своему локальному хосту с помощью локального ПК Айпи адрес:
user3285339
источник
0

Подключение телефона Android через USB-кабель и доступ к http-серверу на компьютере.

  1. Брандмауэр - выключите его, как только все заработает, вы можете добавить правило в правила для входящих подключений, включить HTTP-сервер Apache (UDP и TCP) (или любой другой HTTP-сервер, который вы используете). Предупреждение - если вы отключите брандмауэр, ваш компьютер станет уязвимым. к интернет-атакам. Так что сначала отключите интернет и отключитесь от сети. Вам не обязательно быть в Интернете, чтобы это работало, так как вы подключаете два устройства к локальной сети.

  2. Подключите кабель USB. Если появится окно сети, выберите Домашняя сеть. Если он не всплывает, вероятно, он установлен на общедоступный (что не сработает), поэтому перейдите в: Панель управления \ Сеть и Интернет \ Центр управления сетями и общим доступом (в win7) и установите там домашнюю сеть. Он может дать вам следующий экран после того, как вы нажмете его, чтобы поделиться изображениями, музыкой ... просто нажмите на нем "Отмена". На главном экране домашняя сеть будет по-прежнему активна.

  3. Вам нужен IP-адрес компьютера, localhost или другие псевдонимы не работают. Чтобы получить IP-адрес вашего компьютера, запустите оболочку командной строки Windows (нажмите Windows Key + R и введите cmd), должно появиться черное окно командной строки, введите: «ipconfig» и нажмите Enter. Теперь ищите

IPv4-адрес. . . . . . . . . . . : 192.168. ###. ### Это IP, который ваш телефон назначил вашему компьютеру.

  1. Теперь все готово. В браузере телефона попробуйте открыть тестовый html-файл с сервера вашего компьютера, он должен отображаться нормально.

  2. Теперь, когда все работает, вы, вероятно, захотите включить брандмауэр и доступ в Интернет на своем компьютере. Теперь попробуйте снова получить доступ к вашему http-серверу. Вероятно, это не сработает. В зависимости от ваших настроек вы можете получить всплывающее окно с просьбой добавить разрешающее правило, но если вы этого не сделаете, просто добавьте его самостоятельно. Запустите брандмауэр Windows, перейдите к Правилам для входящих подключений (потому что это сервер) и добавьте новое правило. Выберите «Программа». Найдите exe вашего HTTP-сервера и на следующем экране убедитесь, что выбрано Разрешить. Попробуйте подключиться снова, и теперь все должно работать. Если нет, то, вероятно, вы выбрали неправильный exe. Вы даже можете пойти дальше, чтобы ограничить внешнее использование (потому что теперь каждый в Интернете может получить к нему доступ, если у них есть ваш IP-адрес в Интернете). Чтобы ограничить доступ, вы можете щелкнуть правой кнопкой мыши новое правило, которое вы только что создали,

    Примечание для разработчиков Android: теперь в вашем коде Android вы должны использовать «http: //», иначе это не сработает. Например: MyAsyncTask.execute ("http://192.168.123.123/test.html")

Часть II - Установка фиксированного / статического IP-адреса.

Теперь, когда все работает, каждый раз, когда вы отсоединяете кабель и снова подключаете его, ваш IP-адрес будет меняться. И если вы используете его где-то, например, внутри кода, вам придется обновлять его каждый раз! Решение, которое я придумал, - установить статический IP-адрес.

  1. Подключив и привязав телефон, вернитесь в Центр управления сетями и общим доступом и щелкните подключение по локальной сети «Подключения:»

снимок экрана

  1. На следующем экране выберите «Свойства», затем выделите IP 4, нажмите «Свойства» и нажмите «Использовать следующий IP-адрес».
  2. Поместите шлюз по умолчанию и маску подсети точно так же, как это было в ipconfig, а для IP-адреса измените только последние 3 цифры на любые от 1 до 255

снимок экрана

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

Эмиль
источник
0
  1. Убедитесь, что на компьютере установлен adb , на телефоне включена отладка по USB и телефон разрешил доступ к компьютеру. Подключите телефон к компьютеру через USB-кабель и убедитесь, что он виден (он должен отображаться в команде Bash adb devices.
  2. В браузере Chrome на вашем компьютере откройте chrome: // inspect / # devices , нажмите кнопку «Переадресация портов», установите флажок «Включить переадресацию портов» и добавьте порт на компьютере, который должен быть доступен с телефона ( подробные инструкции здесь ). Вам нужно будет держать открытой вкладку с chrome: // inspect / # devices.
  3. В браузере телефона перейдите по адресу localhost: [номер_порта], и он должен отобразить все, что выполняется на компьютере.

Это работает в Windows и Ubuntu Linux, а также должно работать на Mac.

Джош
источник