1

我正在尝试让我的 Android 2.3.5 手机在我的 LAN 网络上列出所有可能的 Raspberry Pi(运行 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. 我可以从我的 Win7 PC 中ping获取 ip 地址192.168.0.4,但是我无法ping获取主机名、nslookupip 或主机名。

当我在手机上尝试使用 java 中的以下代码时,它声称它是可访问的,但是 get hostname 行返回的是 ip 地址而不是主机名,我认为如果找不到主机名,它应该这样做:

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

有谁知道我做错了什么?这甚至是在 LAN 上查找所有一种类型的设备的明智方法吗?如果是这样,我相当确定我的 android 方面是正确的,但我对 LAN 知之甚少。

PS对不起,如果这个问题很长而且令人费解,我想包括我尝试过的所有内容。此外,我正在使用声称:

Software version "R36"
Hardware version 2.00

谢谢

4

1 回答 1

3

简而言之:您的 DNS 无法按您预期的方式工作 - 它在主机名rpi0和 IP 地址之间没有关联192.168.0.4

这可能有多种原因,其中一个原因是,并非所有家用路由器都保留本地区域 - 如果您的路由器就是这种情况,那么您根本就不走运。

如果您的路由器确实保留了本地区域,请确保您的 PI 使用正确的主机名运行其 DHCP 请求 - 您可以通过在设置主机名后简单地断开/重新连接它们来做到这一点。

于 2012-11-27T00:45:17.617 回答