Trouver le SSID d'un réseau sans fil avec Java
Nous faisons un projet codé en Java (compilé pour JRE 1.6) et ont besoin d'un peu d'aide avec
un peu, mais apparemment compliquée fonctionnalité:
Nous voulons faire une certaine action lorsqu'un réseau sans fil est connecté par exemple, si vous raccordez un SSID=="myNetworkAtHome" ou similaire.
Après la recherche par le biais de ce site, google et la documentation de Java, nous avons parcouru un peu plus près.
Après avoir regardé le code ici:
http://download.oracle.com/javase/tutorial/networking/nifs/retrieving.html
Il semble que nous approchions, mais il frappe un cul-de-sac, toutes les interfaces semble être reliée à la "net0" par "net13" (sur mon ordinateur portable qui est.)
Et nous ne sommes pas en mesure d'obtenir le SSID de l'interface. Je dois réaliser le code de l'exemple est seulement de donner les noms d'interface et non connectés, réseaux, mais il ne semble pas offrir un moyen d'aller chercher de la connectés au réseau de l'information.
Toute aide sur ce serait extrêmement serviable!
Ce qui concerne
Martin NJ
OriginalL'auteur Martinnj | 2011-03-21
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas accéder à cette détails de bas niveau du réseau en Java. Vous pouvez obtenir des détails de l'interface réseau avec le
NetworkInterface
classe, mais si vous la voyez à la condition méthodes, ni l'une est liée à des réseaux Wifi, ni aucun moyen d'obtenir le SSID est fourni. Comme indiqué ci-dessous, vous devez utiliser certaines fonctionnalités en natif par le biais de l'appel d'une bibliothèque native avec JNI ou en appelant un OS outil avecRuntime
.Java n'est pas conçu pour faire ce genre de choses, c'est difficile à mettre en œuvre dans une plate-forme indépendante et tout le matériel de niveau de détail ne peut pas être gérée en Java par principe.
Même chose s'applique à d'autres réseaux comme la 3G, GPRS... l'application ne doit pas être au courant du type de connexion, ni de ses détails. Java ne peut gérer les choses au Transport (TCP), le réseau (IP) pas de Lien (3G, Wifi, Ethernet...), de sorte que vous ne pouvez gérer les sockets.
Si Java n'est pas conçu pour être en mesure d'écrire un système d'exploitation complet, sauf JNI ?
Java n'est pas capable "d'écrire" un OS comme c'est un langage interprété nécessitant une Machine Virtuelle en cours d'exécution sur le dessus d'un certain type de système d'exploitation. Si vous demandez à propos d'accéder à tous les systèmes d'exploitation des ressources, Java n'est pas conçu pour ce genre de choses, comme l'un de ses objectifs est d'être portable sur l'ensemble des OS et pas d'accès direct à HW. Si vous voulez un peu faible au niveau des fonctionnalités comme le travail du Wifi 802.X, utiliser JNI ou choisir un autre langage comme le C/C++. Les autres principaux langages interprétés comme .Net plate-forme ne pourrait pas également l'accès wi-fi détails spécifiques nativement comme c'est un non-sens.
Par souci d'exactitude, en fait il y avait un couple d'OS écrit (principalement) en Java. Java Peut être utilisé pour développer un système d'exploitation?
Oui! Ne veux pas commencer une flamme o troll de guerre!
OriginalL'auteur David Oliván Ubieto
Vous devrez recourir à une JNI solution. Il y a quelque chose de disponible à http://sourceforge.net/projects/jwlanscan, mais qui ne fonctionne que pour les systèmes Windows. Ou vous pourriez faire de la pire méthode et l'utilisation de l'Exécution.getRuntime().exec(...) et utiliser les outils de ligne de commande disponibles pour votre système d'exploitation (*nix = iwconfig), et le recours à l'analyse.
*nix !=
iwconfig
. Linux =iwconfig
. OS X =/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport
. *BSD =ifconfig
. Et de la croix-plate-forme nécessiterait différentes implémentations de la classe Java sur différentes plates-formes.OriginalL'auteur Lieven Doclo
OriginalL'auteur Alireza Taghizadeh