InetAddress.getByName не работает - PullRequest
1 голос
/ 10 марта 2011

Я ищу компьютер с именем «Base» в локальной сети. Однако я не могу его найти, и возвращается адрес от моего провайдера (так что сетевой доступ определенно работает).Возврат: «База / 81.200.64.50».По сути, он не может найти имя.Я использую эмулятор.Код, который я использую, является копией кода Java, который работает в Windows и работает нормально - возвращает мой адрес локальной сети.Чего мне не хватает ???

Код:

InetAddress address = InetAddress.getByName(Constants.serverNameStr);

ОК - похоже, проблема в поиске DNS.Если я заменю «Base» на «www.google.com», я получу 74.125.230.145, то есть Google.Кажется, эмулятор не может разрешить имя с помощью локального маршрутизатора DNS.Я попытался настроить параметры на эмуляторе, но не повезло.Любые идеи?


Также попытался ввести DNS маршрутизатора локальной сети в конфигурации отладки эмулятора.Не повезло

1 Ответ

0 голосов
/ 15 марта 2011

У меня похожая проблема с невозможностью получить какую-либо полезную информацию от InetAddress.getByName (), но я выяснил пару вещей, которые могут быть полезны:

  1. Если вы используете DNS от своего интернет-провайдера (которым вы, вероятно, являетесь), то ваш интернет-провайдер может давать вам IP-адрес для одного из своих веб-сайтов, когда он не может найти запрошенный вами хост.Например, Comcast возвращает IP-адрес реальной веб-страницы, когда он не может найти хост.Большинство людей, которые понимают это, не хотят этого поведения, и вы можете исправить это, изменив DNS-адреса в домашнем маршрутизаторе, чтобы они указывали на DNS-серверы Google.Используйте 8.8.8.8 и 8.8.4.4 (для первичного и вторичного DNS-серверов.) DNS-серверы Google также, как правило, быстрее и безопаснее.После того, как вы измените DNS-серверы в вашем маршрутизаторе, InetAddress.getByName () сгенерирует исключение UnknownHostException при запросе хоста, который он не может найти.

  2. Если вы видите имя локального компьютерав списке подключенных устройств на домашнем маршрутизаторе вам может потребоваться добавить «.local» к имени хоста в качестве аргумента InetAddress.getByName ().Например, ноутбуки Mac часто имеют имя хоста, оканчивающееся на «.local», но таблицы маршрутизатора не отображают его пользователю.(По крайней мере, мой маршрутизатор NetGear не показывает часть «.local» имени хоста.)

...