Не удается увидеть имя хоста на устройстве локальной сети

Я пытаюсь заставить свой телефон Android 2.3.5 отображать все возможные Raspberry Pis (под управлением Raspbian) в моей локальной сети. В сети есть и другие устройства, поэтому я решил сделать это в псевдокоде следующим образом:

foreach ip 0..254
    hn = gethostname("192.168.0." + ip);
    if(hn == "rpi*") {
        do_something();
    }

Я успешно установил имя хоста RPi с помощью:

sudo hostname rpi0

Мой маршрутизатор показывает, что RPi подключен к 192.168.0.4. Я могу ping IP-адрес 192.168.0.4 с моего ПК с Win7, однако я не могу ping имя хоста, или nslookup IP или имя хоста.

Когда я пробую приведенный ниже код в java на своем телефоне, он утверждает, что он доступен, но строка получения имени хоста возвращает IP-адрес, а не имя хоста, что, я думаю, должно делать, если он не может найти имя хоста:

InetAddress inetAddress = InetAddress.getByAddress(ipAddress);
Log.d(TAG, inetAddress.isReachable(5000));
Log.d(TAG, inetAddress.getHostName());

Кто-нибудь знает, что я делаю неправильно? Является ли это вообще разумным способом поиска всех устройств одного типа в локальной сети? Если это так, я вполне уверен, что у меня правильная сторона Android, но я не так много знаю о локальных сетях.

PS извините, если этот вопрос длинный и запутанный, я хотел включить все, что пробовал. Также я использую Virgin Superhub, который утверждает:

Software version "R36"
Hardware version 2.00

Спасибо


person Katy Montgomerie    schedule 27.11.2012    source источник


Ответы (1)


Вкратце: ваш DNS работает не так, как вы ожидаете — у него нет связи между именем хоста rpi0 и IP-адресом 192.168.0.4.

Это может иметь множество причин, одна из которых заключается в том, что не все домашние маршрутизаторы вообще сохраняют локальную зону — если это так с вашим маршрутизатором, вам просто не повезло.

Если ваш маршрутизатор поддерживает локальную зону, убедитесь, что ваши PI выполняют свои DHCP-запросы с правильными именами хостов — вы можете сделать это, просто отключив/повторно подключив их после установки имени хоста.

person Eugen Rieck    schedule 27.11.2012