在LAN设备上看不到主机名

时间:2012-11-27 00:37:44

标签: networking hostname dhcp

我正在尝试让我的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。 我可以从Win7 PC中ping IP地址192.168.0.4,但我不能ping主机名,或nslookup IP或主机名。

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

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

有谁知道我做错了什么?这甚至是在LAN上寻找所有类型设备的理智方式吗?如果是这样,我相当确定我的机器方面是正确的,但我不太了解局域网。

PS抱歉,如果这个问题冗长而复杂,我想要包括我尝试过的所有内容。我也使用Virgin Superhub声称:

Software version "R36"
Hardware version 2.00

由于

1 个答案:

答案 0 :(得分:3)

简而言之:您的DNS无法按预期运行 - 主机名rpi0与IP地址192.168.0.4之间没有任何关联。

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

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