Comment faire pour obtenir l'adresse IP et les noms de tous les périphériques de réseau local sur Android
Je veux voir tous les appareils connectés sur mon réseau avec java, mais je ne peux pas le faire fonctionner. J'ai joint quelques captures d'écran ci-dessous de la façon dont je veux qu'elle soit sortie. Je voudrais avoir le nom (par exemple "TP Link Routeur" ou "Nexus 5X") et l'adresse IP.
J'ai beaucoup cherché sur google et stackoverflow, mais rien ne semblait fonctionner pour moi. Même GitHub n'a pas de code. J'ai essayé de chercher pour UPnP, Réseau Local, sous-réseaux, etc, mais rien trouvé.
InetAddress localhost = InetAddress.getLocalHost();
byte[] ip = localhost.getAddress();
for (int i = 1; i <= 254; i++) {
ip[3] = (byte)i;
InetAddress address = InetAddress.getByAddress(ip);
if (address.isReachable(1000)) {
System.out.println(address + address.getHostAddress() + address.getAddress() + address.getHostName() + address.getCanonicalHostName());
}
}
Je n'ai en effet trouver un duplicata (en quelque sorte) de la question, mais il n'a pas reçu de réponse depuis plus d'un an. Source
où avez-vous obtenu ces identicons?
Par la façon dont, en commentant une autre question qui n'a pas de bosse dans la première page
ceux qui ont été à partir de l'app, je pense qu'ils viennent de générer d'après le nom de celui-ci
Je n'étais pas viser que... 😛 . J'espérais que l'original interlocuteur a déjà résolu et je voulais le partager
Par la façon dont, en commentant une autre question qui n'a pas de bosse dans la première page
ceux qui ont été à partir de l'app, je pense qu'ils viennent de générer d'après le nom de celui-ci
Je n'étais pas viser que... 😛 . J'espérais que l'original interlocuteur a déjà résolu et je voulais le partager
OriginalL'auteur Jason | 2016-09-05
Vous devez vous connecter pour publier un commentaire.
Le principal problème est que vous êtes en saisissant l'adresse IP incorrecte. InetAddress.getLocalHost() retourne l'adresse 127.0.0.1 et c'est juste votre appareil.
Utiliser le Wifi de l'adresse IP dans la place:
Ici est un moyen rapide et sale AsyncTask qui fait que:
Voici les autorisations:
Pas tous les routeurs permettent, donc, pour obtenir les noms dans une autre façon de faire est d'envoyer l'adresse mac d'une api et d'obtenir le nom de la marque en retour.
Trying ip: 192.168.0.193
. J'ai envie de dire ceci par exemple: Trouvé IP 192.168.0.130 avec le nom "MON PC". Comment puis-je le faire?0.0.0.0? assurez-vous que vous êtes sur le WiFi sur un périphérique réel. Et modifiées code imprime accessible IPs avec le nom d'hôte associé.
jup vous avez raison, je l'ai testé sur un émulateur (stupide moi), c'est pourquoi il n'a pas de travail. Le problème maintenant est que je n'obtiens pas de noms. Pourquoi pas? C'est ce que je suis. Par exemple 192.168.0.105 est sonos, mais je ne vois pas son nom, et d'autres applications ne.
Host: 192.168.0.105(192.168.0.105) is reachable! Trying ip: 192.168.0.106 Trying ip: 192.168.0.107 Host: 192.168.0.107(192.168.0.107) is reachable! Trying ip: 192.168.0.108 Host: 192.168.0.108(192.168.0.108) is reachable! Trying ip: 192.168.0.109 Host: 192.168.0.109(192.168.0.109) is reachable!
Impair. Quand je le lance je vois le nom d'hôte lorsqu'il est disponible. Pour mon routeur est répertorié comme:
Host: router.asus.com(192.168.1.1) is reachable!
je vois aussi beaucoup d'autres appareils flottant autour comme mes téléphones portables et d'imprimantes avec les noms d'hôtes. J'ai ajouté les autorisations utilisées, btw.Autres applications peuvent essayer quelque chose de plus sophistiqué. Si vous trouvez une application qui fait ce que vous voulez faire, vous pouvez toujours aller le le développeur ou le décompiler pour voir comment les choses se faire.
OriginalL'auteur DataDino