2011-12-09 4 views
1

以外、すなわち、ネットワークの情報を持つリストを表示します。これは正常に動作します。次に、ネットワークに接続されているデバイスの詳細を検索して表示します。 これらのデバイスを見つける方法はありますか? あなたのコメントは私のために役立つ、ありがとう。無線LANの検索は、検索に利用できる無線LANで .....私は私のプロジェクトへの変更をしたいと今、プロジェクトのステータスがある(Android用)ACCESポイント

+0

使用** AppFinder libに** [ここです](https://stackoverflow.com/questions/44281905/get-devices-connected-to-same-wifi-network-in-android-programmatically/44284242 #44284242)ソリューションは – sparkmohit

答えて

4

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

EDIT特定のデバイスの発見

UDP Broadcastを使用して
を。参考資料はhereです!

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

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

+0

はい、私はすべてを発見したかった.........しかし、あなたが言ったように、それは不可能です。移動するために、私は特定のデバイスを検索するように勧めます。 – patric

+0

私の編集した答えを見てください。 –

+0

あなたの有用で迅速な返信をありがとう....私はそれをチェックします...ありがとう。 – patric

10

あなたがそれらをIP範囲にわたってループをすることができ、そして「ピング」。 これは最高の/最速の方法ではありませんが(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; 
} 
+0

私は1つが好き。ただ、面白い方法を0から255まで、あなたのループと平行に走るループ内の追加のカウンターを持っています。 – Clerenz

関連する問題