2012-11-27 23 views
0

我想讓我的Android 2.3.5手機列出我局域網上所有可能的Raspberry Pis(運行Raspbian)。 有網絡上的其他設備,所以我認爲去這樣做,在僞代碼的方式,爲:看不到LAN設備上的主機名

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()); 

有誰知道我在做什麼錯?這是一種理想的方式去尋找局域網中所有類型的設備嗎?如果是這樣,我相當肯定我的android方面的東西是正確的,但我不太瞭解局域網。

PS不好意思,如果這個問題很長很複雜,我想包括我曾嘗試過的一切。另外我使用的是維京Superhub聲稱:

Software version "R36" 
Hardware version 2.00 

感謝

回答

2

簡而言之:您的DNS不工作,你所期望的方式 - 它的主機名rpi0和IP地址192.168.0.4之間沒有關聯。

這可能有多種原因,其中之一是,並非所有的家庭路由器都保留本地區域 - 如果路由器出現這種情況,那麼您的運行狀況就會很糟糕。

如果您的路由器確實保留了本地區域,請確保您的PI以正確的主機名運行其DHCP請求 - 您可以通過在設置主機名後斷開連接/重新連接來完成此操作。

相關問題