Как связаться с локальным компьютером по имени машины вместо IP?

Здесь разработчик прототипирует мобильное приложение, несколько новое для мобильных устройств:

  • У меня есть простая служба HTTP, работающая (в настоящее время) на моем основном ноутбуке с именем машины latitude.
  • Другой ноутбук с именем vaio, использующим ту же сеть Wi-Fi, может получить доступ к этой службе через http://latitude:8080— другими словами, он может легко latitudeкаким-то образом разрешить (текущий) IP-адрес 192.168.xy (или любой другой динамический IP-адрес, который у него есть в данный момент).
  • Теперь мои телефоны HTC Android, подключенные к той же сети Wi-Fi, могут получить доступ к IP-адресу, latitudeпоэтому открытие в его браузере http://192.168.x.y:8080работает.
  • Но я также хотел бы использовать здесь имя машины, например, когда я получаю доступ к службе HTTP из vaio, просто набрав http://latitude:8080и позволив телефону разрешить текущий динамический IP-адрес latitude. Это не работает, только появляется стандартная страница ошибки браузера: «Веб-страница недоступна» .

Есть ли какие-то настройки DNS в Android, которые мне нужно настроить? Ничего не нашел, играя с настройками, и такой вопрос, как известно, сложно найти в Google...

У One V есть Android 4.0, а у One M7 — Android 4.2, если это имеет значение.

(Обратите внимание, это должно работать, даже если Android не подключен к моим компьютерам через USB и не действует как точка доступа WiFi — очевидно, поскольку он все равно использует мою основную сеть WiFi).

Ответы (4)

Независимо от того, подключены ли вы к локальной сети через WiFi и используется ли DHCP, Android всегда переопределяет свои записи DNS, используя серверы Google. Это несколько скрыто, но его легко изменить — при условии, что у вас есть собственный DNS (многие маршрутизаторы уже предлагают это).

Для этого перейдите к списку сетей Wi-Fi в настройках , нажмите и удерживайте запись своего WiFi, выберите, чтобы отредактировать ее. Активируйте дополнительные настройки. Теперь вы можете редактировать записи DNS. Просто замените первую запись IP-адресом вашего собственного DNS-сервера и оставьте вторую запись (DNS 2) нетронутой для отката.

Теперь, если ваш собственный DNS может разрешать компьютеры вашей локальной сети, вы должны иметь возможность использовать их имена хостов для связи с ними. Нет hostsнеобходимости в руте и редактировании файла (хотя это может быть альтернативой, если у вас нет собственной службы DNS). Отлично работает здесь со мной и моей сетью ;)

Спасибо! Вот странная вещь, когда я это делаю, мой маршрутизатор (шлюз) уже также вводится как DNS1 (а Google или 8.8.4.4 как DNS2). Что ж, я использую эти значения по умолчанию и применяю их, NetBIOS и SMB включены на компьютере с Windows, но разрешения имен по-прежнему нет...
У меня нет планов с Windows. В моем случае это среда на базе Linux, а на маршрутизаторе (AVM Fritz!Box) работает сервер имен. Работает плавно.
Это должно в лучшем случае (если даже) применяться только к старым версиям Android. Мой первый DNS — мой локальный, а запасной — Google 8.8.8.8. Посмотрел это с getprop | grep -i dnsСм. Также android.stackexchange.com/a/32278/15713
Firefox действует по-другому и не показывает такого поведения, я думаю, это омнибокс Chrome (комбинированное поле ввода поиска/URI), который делает это
Firefox не использует свои собственные DNS-серверы (по крайней мере, мне было бы интересно). Все программное обеспечение обычно запрашивает эту информацию у системы, поэтому браузер здесь не имеет значения. @ce4: Да, именно так я настроил его вручную на своем устройстве: тот же запасной вариант, но основной мне пришлось вручную изменить с 4.4.4.4 на мой локальный DNS-сервер. Я знаю, что мой DHCP-сервер отправляет эту информацию, но я не видел ни одного Android-устройства, которое это соблюдает.
Обновление: см. мой комментарий здесь , похоже, я должен частично отозвать свое заявление, поскольку описанное поведение может быть характерным для версий Android или производителей. Только что перепроверил на своих более новых устройствах 4.1.1, и мой DNS там используется правильно; хотя я должен признать, что потерял след, какие из них я мог настроить вручную. Но поскольку оба по-прежнему были настроены на DHCP (и для изменения требуется использование статического), они, скорее всего, не подделаны.
CM7.2 также чтит настройки, полученные по DHCP (только для радиоинтерфейса GSM (rmnet1) устанавливает DNS-серверы Google (вероятно, чтобы побороть дерьмовые DNS-серверы провайдера): [net.dns1]: [192.168.xx] \n [net .dns2]: [8.8.4.4] \n [net.rmnet0.dns1]: [8.8.8.8] \n [net.rmnet0.dns2]: [8.8.4.4] \n [dhcp.tiwlan0.dns1]: [ 192.168.xx] \n [dhcp.tiwlan0.dns2]: []
Когда я использую статический IP-адрес под Android 7.1, моя локальная сеть внезапно становится недоступной (несмотря на использование идентичных сетевых настроек, которые предоставляет DHCP)!
Иззи, спасибо за ответ. Поскольку ему уже 7 лет, я больше не могу найти эти настройки в Android. Мне интересно, знаете ли вы, как ответить android.stackexchange.com/q/230644/22600 Спасибо за ваши мысли!
@Ryan, они все на том же месте: Настройки > Сеть > WiFi — и, нажав и удерживая имя, вы можете открыть меню, позволяющее изменить настройки точки доступа. Может показаться , что при открытии «расширенных» настроек детали пропали, но попробуй пролистать туда, они просто прячутся :) О: а кнопка «редактировать» доступна только для той сети, к которой ты подключен, похоже. Только что проверил и проверил на Android 7+8.
@Иззи Спасибо. В Android 11, если я долго нажимаю на имя сети Wi-Fi, я вижу только варианты «Отключить» и «Забыть». Если я щелкну значок шестеренки, я увижу «Дополнительно», но ни один из данных/параметров не покажется полезным.
Я не могу помочь с этим, у меня здесь нет устройства Android-11. Но, может быть , вам поможет одно из приложений для настройки WiFi или DNS Tools ?

Когда мне нужно имя машины вместо IP, я редактирую файл HOSTS. Попробуйте добавить туда устройства и их IP-адреса. Поиск в Google файла hosts для вашей операционной системы должен быть простым.

Редактирование HOSTS полезно только в том случае, если IP-адрес ноутбука всегда остается статическим / одним и тем же. Этого не будет, так как я работаю в пути, разные сети Wi-Fi, динамические IP-адреса. Кроме того, для редактирования HOSTS требуется рутированный Android, но мне нужно, чтобы он оставался без рута и в значительной степени не подвергался тестированию в условиях «обычного потребительского телефона».

Добавьте две строки в конец файла hosts вашего устройства ( /etc/hosts) с помощью ES Explorer (требуется рутированное устройство).

Шаблон:

your_host_machine's_IP_address  domain_name   

Пример domain_nameможет быть localhost.

Пример:

::1  domain_name 

Он отлично работает при вводе localhostв строке URL вместо IP-адреса.

Я исправил \etc\hostsи /etc/hostsвнес некоторые изменения в форматирование. Я старался не менять замысел, а сделать его лучше. Дайте мне знать, если я где-то накосячил.

В моем случае в Windows 10 временное отключение брандмауэра Windows сделало серфинг http://latitude:8080возможным.

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

  • {Windows} > Пуск > "Брандмауэр" > Брандмауэр Защитника Windows с расширенной безопасностью. Входящие правила > Новое правило...

    • Общий
      • Имя: веб-соединения TCP из локальной сети
      • Разрешить соединение, если оно безопасно...
      • Выберите: «Разрешить подключение, если оно аутентифицировано и защищено целостностью».
    • Протоколы и порты
      • Тип протокола: TCP
      • Местный порт: 80, 880
    • Передовой
      • Укажите профили, к которым применяется это правило: Частный
  • {Андроид}. Тестируйте с Firefox или Chrome, а не с Dolphin