Я пытаюсь заставить свой телефон 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
Спасибо