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