1

プロジェクトに変更を加えたいのですが、現在のプロジェクト ステータスは..... 利用可能な WiFi ネットワークを検索し、適切に機能するネットワークの情報を含むリストを表示します。詳細を検索して確認したいネットワークに接続されているデバイスの。これらのデバイスを見つける方法はありますか? あなたのコメントは私にとって役に立ちます、ありがとう。

4

2 に答える 2

12

IP 範囲をループして「ping」することができます。これは最善/最速の方法ではありません (UDP の方が優れています) が、多くの場合に機能します。以下のサンプル コードは、現在のネットワークに接続されている IP アドレスのリストを返します。

private int LoopCurrentIP = 0;

public ArrayList<InetAddress> getConnectedDevices(String YourPhoneIPAddress) {
    ArrayList<InetAddress> ret = new ArrayList<InetAddress>();

    LoopCurrentIP = 0;

    String IPAddress = "";
    String[] myIPArray = YourPhoneIPAddress.split("\\.");
    InetAddress currentPingAddr;

    for (int i = 0; i <= 255; i++) {
        try {

            // build the next IP address
            currentPingAddr = InetAddress.getByName(myIPArray[0] + "." +
                    myIPArray[1] + "." +
                    myIPArray[2] + "." +
                    Integer.toString(LoopCurrentIP));

            // 50ms Timeout for the "ping"
            if (currentPingAddr.isReachable(50)) {

                ret.add(currentPingAddr);
            }
        } catch (UnknownHostException ex) {
        } catch (IOException ex) {
        }

        LoopCurrentIP++;
    }
    return ret;
}
于 2012-01-06T18:36:31.963 に答える
5

特定のデバイスを検出しますか? または、接続されているすべてのデバイスのリストが必要ですか? 2つ目はありえないと思います。

編集

特定のデバイスの検出:
を使用しUDP Broadcastます。ここでいくつかの参照を見つけることができます!

UPNPのように、一部のデバイス (ルーター、HDD など) でサポートされているプロトコルがいくつかあります。

発見したいデバイス上でソフトウェアを開発する場合UDP、特定のポートでリッスンするサーバーを作成できます。クライアントはbroadcastそのポートでメッセージを送信するだけServerで、必要な情報を含む応答を送信します。 これは簡単な例です

于 2011-12-09T14:32:08.607 に答える