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

私のルーターは、R​​Piがに接続されていることを示しています192.168.0.4pingWin7 PCからIPアドレスを取得できますが、ホスト名、IPまたはホスト名192.168.0.4を取得できません。pingnslookup

電話のJavaで以下のコードを試してみると、到達可能であると表示されますが、get hostname行は、ホスト名ではなくIPアドレスを返します。これは、ホスト名が見つからない場合に実行されるはずです。

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

誰かが私が間違っていることを知っていますか?これは、LAN上の1つのタイプのデバイスすべてを見つけるための正しい方法でさえありますか?もしそうなら、私は物事のアンドロイド側が正しいとかなり確信していますが、LANについてはあまり知りません。

PSこの質問が長くて複雑な場合は申し訳ありませんが、私が試したすべてのものを含めたいと思いました。また、私は次のように主張するVirginSuperhubを使用しています。

Software version "R36"
Hardware version 2.00

ありがとう

4

1 に答える 1

3

つまり、DNSは期待どおりに機能しません。ホスト名rpi0とIPアドレスの間に関連付けはありません192.168.0.4

これにはさまざまな理由が考えられますが、その1つは、すべてのホームルーターがローカルゾーンを保持しているわけではないということです。ルーターの場合は、運が悪いだけです。

ルーターがローカルゾーンを保持している場合は、PIが正しいホスト名を使用してDHCP要求を実行していることを確認してください。これは、ホスト名を設定した後で切断/再接続するだけで実行できます。

于 2012-11-27T00:45:17.617 に答える