我正在尝试让我的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在我的手机上尝试下面的代码时,它声称它是可访问的,但get hostname行返回ip地址而不是主机名,我认为如果找不到主机名,它应该这样做:
InetAddress inetAddress = InetAddress.getByAddress(ipAddress);
Log.d(TAG, inetAddress.isReachable(5000));
Log.d(TAG, inetAddress.getHostName());有人知道我做错了什么吗?这是一种在LAN上查找所有一种类型设备的明智方法吗?如果是这样的话,我相当确定我的android方面的事情是正确的,但我对LAN了解不多。
PS如果这个问题很长很复杂,我很抱歉,我想包括我尝试过的一切。另外,我使用的是Virgin Superhub,它声称:
Software version "R36"
Hardware version 2.00谢谢
发布于 2012-11-27 08:45:18
简而言之:您的DNS没有按照您期望的方式工作-它在主机名rpi0和IP地址192.168.0.4之间没有关联。
这可能有许多原因,其中之一是,并不是所有的家庭路由器都保留本地区域-如果您的路由器是这种情况,那么您只是运气不佳。
如果您的路由器确实保留了本地区域,请确保您的PI使用正确的主机名运行其DHCP请求-您只需在设置主机名后断开/重新连接它们即可。
https://stackoverflow.com/questions/13575625
复制相似问题