Pour le moment, lorsque j'ai cherché sur Google, cette page est sortie. http://www.yukun.info/blog/2008/10/java-inetaddress-getlocalhost.html
C'est le résultat de la copie du cercle et de son exécution telle quelle. Une adresse IP que je n'ai pas reconnue a été sortie.
Si vous inclinez la tête, lancez l'invite de commande et ipconfig.
"Qui êtes vous!"
Je ne sais pas ce qui se passe dans d'autres environnements, mais au moins sur cette machine, j'ai trouvé que je ne pouvais pas obtenir l'adresse IP Wi-Fi en utilisant InetAddress.getLocalHost (). Même si vous continuez à rechercher sur Google, seuls les articles Android apparaîtront, il semble donc que vous deviez penser à une autre méthode même si vous la poussez.
Comme vous pouvez le voir à l'invite de commande, j'ai pensé que je devrais pouvoir jouer avec cela du côté Java, j'ai donc décidé de l'essayer. J'ai googlé que Java devrait également avoir System () en langage C.
http://d.hatena.ne.jp/takami_hiroki/20101221/p1
Sur cette base, si vous obtenez la sortie par la commande du système d'exploitation ipconfig et l'affichez ...
Oui c'était. Le code de caractère utilisé dans l'invite de commande de la version japonaise de Windows est Shift-JIS. J'ai essayé de faire la sortie et la chaîne de caractères après l'acquisition en UTF-8, mais cela ne s'est pas réalisé si j'étais un petit poisson ou une spécification.
Au cours de mes recherches, il s'est avéré que "les fichiers texte écrits en Shift-JIS peuvent être lus". Vous pouvez utiliser le fichier texte généré en exécutant "ipconfig> ip.txt". Comme un flux
ipconfig > ip.txt ↓ Spécifiez le code de caractère Shift-JIS et lisez ip.txt ↓ Recherche en utilisant indexOf () ou split () ↓ Supprimer ip.txt avec un visage innocent
Quel endroit, comme.
Il convient de noter ici que le côté corps principal qui frappe la commande du système d'exploitation et le côté écriture qui renvoie le résultat après avoir été touché sont un traitement parallèle. Si vous commencez à lire sans attendre la fin du processus d'écriture, le professeur IOException viendra naturellement.
Main.java
public class Main {
public static void main(String[] args) {
System.out.println(new getWiFiIP().get());
}
}
getWiFiIP.java
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
public class getWiFiIP {
private String ip="";
public String get(){
return ip;
}
public getWiFiIP() {
try {
ProcessBuilder pb=new ProcessBuilder("cmd.exe", "/c", "ipconfig",">","ip.txt");
Process process = pb.start(); //Démarrez le processus
process.waitFor(); //Attendez que l'exportation soit terminée
ArrayList<String> list=new Text_read("ip.txt").getText(); //Lire le fichier texte
int cnt=list.indexOf("Wireless LAN adapter Wi-Fi:");////////////////////////////////////////////////
for(;;){
if(list.get(cnt).indexOf("IPv4")==-1){
cnt++;
}else{
break;
} //Wi du groupe de chaînes de caractères lu et acquis-Adresse IP de la connexion Fi(IPv4)Rechercher
}////////////////////////////////////////////////////////////////////////////////////////////////////
String[] temp=list.get(cnt).split(":"); //"Adresse IPv4. . . . . . . . . . . .: ×××.×××.×××.Puisqu'il s'agit de "XXX", divisez-le
ip= temp[1]; //Remplacez l'adresse IP acquise
new File("ip.txt").delete(); //IP Mayt.Supprimer le txt
////////////////////////////////////////////////////La gestion des erreurs suivantes
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
if(ip.equals(""))ip= "Échoué à obtenir";
}
}
Text_read.java
import java.io.*;
import java.util.ArrayList;
/////////////////////////////////////////////////////////
//Lisez le fichier texte entier et stockez-le dans ArrayList.//
/////////////////////////////////////////////////////////
public class Text_read {
private ArrayList<String>text=new ArrayList<String>(); //ArrayList pour le stockage
public Text_read(String path/*Chemin du fichier*/){
try {
BufferedReader br =new BufferedReader(new InputStreamReader(new FileInputStream(path), "Shift_JIS"));
for(;;){
text.add(br.readLine());
if(text.get(text.size()-1)==null){
text.remove(text.size()-1);
break;
}
}
br.close();
}catch(IOException e){
System.out.println("Erreur d'E / S");
}
}
public ArrayList<String> getText(){
return text;
}
}
Cela a résolu le problème pour le moment, mais si quelqu'un connaît un moyen plus simple, faites-le moi savoir ...
Recommended Posts