Bonjour,
En java il est possible d'accéder à certaines variables systèmes mais est-il possible de récupérer l'adresse MAC de la machine ?
Merci d'avance pour votre aide.
Version imprimable
Bonjour,
En java il est possible d'accéder à certaines variables systèmes mais est-il possible de récupérer l'adresse MAC de la machine ?
Merci d'avance pour votre aide.
Salut,
Je ne crois pas que ce soit possible en pur Java...
Il faut utiliser JNI
a++
J'ai retrouver un truc que j'avais vu sur le site de SUN
How can i retrieve a client's MAC address
Ca ne marche que avec windows, et en francais ... mais la il suffit juste de modifier la commande a executer en fonction de l'OSCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87 import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; import java.util.StringTokenizer; public class MACAddressCommon { static public void main(String[] args) { System.out.println("Debut main"); String[] cmd = { "cmd.exe", "/c", "ipconfig /all" }; try { Process ps = Runtime.getRuntime().exec(cmd); System.out.println("Fin execution de la commande"); String output = loadStream(ps.getInputStream()); StringTokenizer st = new StringTokenizer(output, "\n"); System.out.println("Traitement du retour de la commande"); int i = 1; String line = ""; String MAC_Address = ""; System.out.println("Debut traitement du retour de la commande"); while (st.hasMoreTokens()) { line = st.nextToken(); System.out.println("Valeur de line"+line); if (line.trim().startsWith("Adresse physique")) { MAC_Address = getMACAddress(line.trim()); System.out.println("MAC_Address=" + MAC_Address); break; } //System.out.println("Token "+(i++)+":"+ line); } System.out.print(loadStream(ps.getErrorStream())); } catch (IOException ioe) { System.err.println("Erreur IO" + ioe.getMessage()); ioe.printStackTrace(); } System.out.println("FIN main"); } // read an input-stream into a String static String loadStream(InputStream in) throws IOException { System.out.println("Debut de loadStream"); int ptr = 0; in = new BufferedInputStream(in); StringBuffer buffer = new StringBuffer(); while ((ptr = in.read()) != -1) { buffer.append((char) ptr); } System.out.println("Fin de loadStream"); return buffer.toString(); } static String getMACAddress(String line) { System.out.println("Debut de getMACAddress"); StringTokenizer st = new StringTokenizer(line, ":"); String MAC_Address = ""; while (st.hasMoreTokens()) { MAC_Address = st.nextToken(); }//getMACAddress System.out.println("Fin de getMACAddress"); return MAC_Address.trim(); } } /********************************************************************************************************************************* * Notice *********** * * The command array {"cmd.exe","/c","ipconfig /all"} means entering ipconfig /all commmand at the command line; * * This program is modified from the code posted in a forum http://forums.devshed.com/t59123/s.html * */
et de la langue de l'OSCode:String[] cmd = { "cmd.exe", "/c", "ipconfig /all" };
ou ce n'est pas Adresse physique mais Physical Address pour un OS en anglaisCode:if (line.trim().startsWith("Adresse physique"))
voila j'espere que ca repond a ce que tu veux faire, j'ai mis des System.out.println pour que tu vois ce qui se passe
Merci wace!
J'avais effectivement pensé à passer par la commande ipconfig/all, mais j'étais encore en train de me battre à vouloir écrire le flux dans un String...
Merci beaucoup.
Je remonte un très vieux topic, mais vu que quand je me suis intéressé à la question il fait partie des premiers résultats google et du coup fait un peu déprimer, complétons le! :)
Il semble que depuis cette date ceci est apparu:
http://download.oracle.com/javase/6/...Interface.html
Exemple ici:
http://www.kodejava.org/examples/250.html
Bon ca, je cherchais aussi une solution autre que le shellexec ^^