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


86

У мене є пристрій Android (вкладка Samsung Galaxy), підключений до ПК через USB.

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

Я можу досягти цього, якщо у мене є і ПК, і пристрій Android, підключені в одній бездротовій мережі.

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

(PS: Цей самий сценарій працює, коли я запускаю програму на емуляторі та використовую ip 10.0.2.2 для доступу до localhost на своєму ПК)


Будь ласка, використовуйте посилання нижче 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, це не відповідає на питання. Саме питання говорить, що він може підключатися через wifi.
bradlis7,

1
Це не відповідає на питання. Це правильна відповідь: stackoverflow.com/a/53920173/2947592
wvdz

44

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

Кроки:

  • Підключіть пристрій Android та машину для розробки з увімкненою налагодженням USB
  • Відкрийте Chrome у своїй розробницькій машині, відкрийте нову вкладку, клацніть правою кнопкою миші на новій вкладці браузера та натисніть перевірити
  • Клацніть на піктограму з трьома крапками праворуч три крапки, -> Інші інструменти, Віддалені пристрої.
  • Подивіться внизу екрана, переконайтесь, що назва вашого пристрою відображається у списку із зеленою крапкою.
  • Подивіться нижче на частину налаштувань, поставте позначку для переадресації портів
  • Додати правило. Наприклад, якщо ваш веб-сервер python працює на вашому комп'ютері localhost: 5000, і ви хочете отримати до нього доступ з порту вашого пристрою 3333, введіть 3333ліву частину та введіть localhost:5000та натисніть Додати правило.
  • Вуаля, тепер ти можеш отримати доступ до свого веб-сервера зі свого пристрою. Спробуйте відкрити нову вкладку браузера та відвідайте http: // localhost: 3333 зі свого пристрою

Працює за рекламою. Також тримайте порти на пристрої та машині однаково можливо :). (Не впевнений, чому ви хочете використовувати інший порт на пристрої)
Ralf de Kleine

Це має бути прийнятою відповіддю. Якщо ви використовуєте самопідписаний сертифікат для свого локального розробника, не забудьте додати протокол SSL у новій вкладці, наприклад localhost: 5000 . Це чудово працює.
turrican_34

4
"Ця панель застаріла на користь інтерфейсу chrome: // inspect / # devices, який має еквівалентну функціональність." Тож просто вставте chrome://inspect/#deviceschrome і перейдіть до кроку переадресації порту відповіді.
крастад

Я просто витратив понад годину, намагаючись зрозуміти, як отримати ці інструкції для роботи з ERR_EMPTY_RESPONSEповерненням із Chrome на пристрої ... поки нарешті не зрозумів, що не запускаю свій сервер localhost на своєму робочому столі і що нічого не потрібно насправді підключитися до! Дох! Запустив сервер (у цьому випадку Apache) і все відразу ж почало функціонувати. Першим важливим кроком є ​​переконатися, що ваш цільовий сервер справді працює, перш ніж налаштовувати порт вперед.
CubicleSoft

це найкраще рішення
Рауль Квіспе

16

Я читав численні форуми і пробував програми для відтворення, але досі не знайшов рішення.

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

Примітка: Використання iPhone як точки доступу Wi-Fi та підключення ПК та пристрою Android працювало, але підключення iPhone 4S повільне і регулярно випадає.

Моє рішення таке:

  • Від'єднайте мережеві кабелі від ПК і вимкніть Wi-Fi.
  • Вимкніть wifi на пристрої Android
  • Підключіть android до ПК через USB
  • Увімкніть "USB-модем" в меню Android. (У розділі Мережі-> більше ...-> Режим модема та портативна точка доступу)
  • Отримайте IP-адресу вашого комп’ютера, призначену кабелем USB-прив’язки. (відкрийте командний рядок і введіть "ipconfig", а потім знайдіть IP-адресу, призначену мережевим адаптером USB)
  • Відкрийте браузер на ПК, використовуючи для перевірки IP-адресу, знайдену замість localhost. тобтоhttp://192.168.1.1/myWebSite
  • Відкрийте браузер на android і перевірте, чи працює

1
У мене є Nexus 10, і я не можу змусити його працювати, але мені це вкрай потрібно. Немає можливості модему !?
Ludus H

У мене проблема також у moto g5s plus. Я призначаю, все ще не працює.
Jigar Fumakiya

5

Ось фрагмент коду мого додатка для Android:

Ця програма може взаємодіяти з моделлю отримання повідомлення HTTP між сервлетом, запущеним на сервері, та пристроєм Android, підключеним до режиму, що відключається через USB ( оскільки додаток був у стадії розробки ).

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

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

Щоб отримати вашу IP-адресу

  1. Перейдіть до командного рядка
  2. Тип ipconfig
  3. Натисніть Enter

У списку IPv4-адреса - це ваша IP-адреса.


Це неточно. Режим налагодження 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. Після додавання правила перейдіть до андроїд-студії -> всередині URL-адреси коду ( http://127.0.0.1:4880 ). Не забудьте змінити порт з 480 -> 4880.

  4. Перейдіть на вкладку віддаленого пристрою в Chrome і натисніть на підключений пристрій. Додати нову URL-адресу (127.0.0.1:4880) Перевірте браузер Chrome на пристрої Android

Перевірте ваш веб-переглядач Chrome на фактичному пристрої та почніть налагоджувати код на фактичному пристрої Android.


1

Перевірте варіанти типу підключення USB. У вас повинен бути такий, який називається "Пропуск через Інтернет". Це дозволить вашому телефону використовувати те саме підключення, що і ваш ПК.


Тільки так я знаю, як використовувати підключення до ПК через USB. Отже, для вашого пристрою я думаю, що відповідь - ні. Симулятор працює, оскільки він використовує спільне з’єднання з ПК.
codemonkey

Я знаю, що нові пристрої HTC з Sense 3 мають опцію (Ex the Sensation)
codemonkey

велике спасибі за допомогу. ще перевірити, чи працює якийсь із варіантів.
saurabh

1

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

По-перше, цілком очевидно, що 10.0.2.2 не буде працювати, оскільки це РЕАЛЬНИЙ апаратний мобільний, а не симулятор.

Тож дотримуйтесь інструкцій Джона:

  • Від'єднайте всі мережеві кабелі на ПК і вимкніть Wi-Fi.
  • Вимкніть wifi на пристрої 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 Defender ->
  3. Попереднє налаштування (зліва) -> Вхідні правила -> Нове правило -> Порт -> у конкретному локальному порту напишіть свої порти Apache -> далі -> далі, тоді ви зможете отримати доступ до свого локального хосту за допомогою локального ПК IP-адреса:

0

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

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

  2. Підключіть USB-кабель. Якщо спливає вікно мережі, виберіть Домашня мережа. Якщо воно не з’являється, можливо, для нього встановлено значення Загальнодоступне (що не буде працювати), тому перейдіть до: Панель керування \ Мережа та Інтернет \ Центр мереж та спільного доступу (у win7) та встановіть там Домашня мережа. Це може дати вам наступний екран після натискання на нього, щоб поділитися зображеннями, музикою ... просто натисніть скасувати на ньому. На головному екрані Домашня мережа все ще буде активною.

  3. Вам потрібен IP комп’ютера, локальний хост чи інші псевдоніми не працюють. Щоб отримати IP-адресу вашої машини, запустіть оболонку командного рядка Windows (натисніть клавішу Windows + R і введіть cmd), має з’явитися чорне вікно командного рядка, введіть: "ipconfig" і натисніть Enter. Тепер шукайте

Адреса IPv4. . . . . . . . . . . : 192.168. ###. ### Це IP-адреса, яку телефон призначив комп’ютеру

  1. Тепер ви повинні закінчити, у браузері телефону спробуйте отримати доступ до тестового файлу HTML із сервера вашого комп’ютера, він повинен відображатися нормально.

  2. Тепер, коли все працює, ви, мабуть, захочете увімкнути брандмауер та доступ до Інтернету на своєму комп’ютері. Тепер спробуйте знову отримати доступ до сервера http. Можливо, це не спрацює. Залежно від налаштувань, ви можете отримати спливаюче вікно з проханням додати правило, щоб дозволити це, але якщо цього не зробити, просто додайте його самостійно. Запустіть брандмауер Windows, перейдіть до Вхідних правил (оскільки це сервер) і додайте Нове правило. Виберіть "Програма". Знайдіть exe вашого сервера http і на наступному екрані переконайтеся, що вибрано Allow. Спробуйте підключитися ще раз, і тепер це має спрацювати. Якщо ні, то, мабуть, тому, що ви вибрали неправильний 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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.