2011-03-09 7 views
4

Je veux faire une application Android qui se connecte à un réseau Wifi, disons réseau SSID = "ABC" .Assumer qu'il est connecté à l'ABC Wifi. Après la connexion à ABC, je voudrais que mon application affiche les ips de tous les appareils Android qui sont connectés au même réseau ABC wifi. Comment puis-je y parvenir? MerciDétecter les appareils Android connectés au Wifi

+0

Bienvenue dans Stack Overflow! Veuillez éviter d'utiliser des réponses pour publier des informations supplémentaires ou suivre des réponses à d'autres réponses. Il suffit de modifier votre question pour fournir des précisions, ou utilisez les commentaires sous chaque réponse affichée pour interagir directement avec son auteur. –

Répondre

1

Vous devrez utiliser tcpdump pour mettre la carte réseau en mode promiscous, puis capturer des paquets pour identifier les autres clients sur votre réseau.

Comment utiliser tcpdump sur android: http://source.android.com/porting/tcpdump.html

Vous pouvez exécuter des commandes dans votre code comme ceci:

try { 
    // Executes the command. 
    Process process = Runtime.getRuntime().exec("/system/bin/ls /sdcard"); 

    // Reads stdout. 
    // NOTE: You can write to stdin of the command using 
    //  process.getOutputStream(). 
    BufferedReader reader = new BufferedReader(
      new InputStreamReader(process.getInputStream())); 
    int read; 
    char[] buffer = new char[4096]; 
    StringBuffer output = new StringBuffer(); 
    while ((read = reader.read(buffer)) > 0) { 
     output.append(buffer, 0, read); 
    } 
    reader.close(); 

    // Waits for the command to finish. 
    process.waitFor(); 

    return output.toString(); 
} catch (IOException e) { 
    throw new RuntimeException(e); 
} catch (InterruptedException e) { 
    throw new RuntimeException(e); 
} 
+1

En supposant que je reçois des paquets désignés pour tous les appareils, y compris les ordinateurs ou les appareils mobiles connectés au wifi, comment pourrais-je différencier les appareils Android des appareils non-android en regardant les paquets? Existe-t-il une manière dont les paquets/processus peuvent être distingués par l'application envoyant/recevant les paquets? – Farhan

4

Vérifiez le fichier:/proc/net/arp sur votre téléphone.

Il dispose des adresses IP et MAC de tous les autres périphériques connectés au même réseau. Cependant, j'ai peur que vous ne serez pas en mesure de différencier si elles sont des téléphones Android ou non.

Questions connexes