IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

[Système] Récupérer l'adresse MAC de la machine


Sujet :

API standards et tierces Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 8
    Points : 7
    Points
    7
    Par défaut [Système] Récupérer l'adresse MAC de la machine
    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.


  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Je ne crois pas que ce soit possible en pur Java...
    Il faut utiliser JNI

    a++

  3. #3
    Membre actif Avatar de wace
    Inscrit en
    Septembre 2003
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 224
    Points : 263
    Points
    263
    Par défaut
    J'ai retrouver un truc que j'avais vu sur le site de SUN

    How can i retrieve a client's MAC address

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     *  
     */
    Ca ne marche que avec windows, et en francais ... mais la il suffit juste de modifier la commande a executer en fonction de l'OS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String[] cmd = { "cmd.exe", "/c", "ipconfig /all" };
    et de la langue de l'OS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (line.trim().startsWith("Adresse physique"))
    ou ce n'est pas Adresse physique mais Physical Address pour un OS en anglais

    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
    Les hommes naissent et demeurent libres et égaux en droits; les distinctions sociales ne peuvent être fondées que sur l'utilité commune
    [article 1er Declaration Universelle des Droits de l'Homme]
    www.baseball-grizzlys.com

  4. #4
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    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.

  5. #5
    Membre habitué Avatar de yaraco
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2010
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2010
    Messages : 89
    Points : 150
    Points
    150
    Par défaut
    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

  6. #6
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Bon ca, je cherchais aussi une solution autre que le shellexec ^^
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Système] Récupérer l'adresse mac
    Par arigon dans le forum Langage
    Réponses: 3
    Dernier message: 13/04/2007, 20h44
  2. [Ada 95] Récupérer l'adresse MAC de la machine
    Par kindool dans le forum Ada
    Réponses: 3
    Dernier message: 26/05/2005, 15h49
  3. [Info] obtenir l'adresse MAC d'une machine
    Par bigboomshakala dans le forum C++
    Réponses: 3
    Dernier message: 27/02/2005, 17h07
  4. [MFC]récupérer l'adresse MAC
    Par julien20vt dans le forum MFC
    Réponses: 6
    Dernier message: 17/02/2004, 11h22
  5. Comment récupérer une adresse MAC ?
    Par psau dans le forum Développement
    Réponses: 7
    Dernier message: 19/07/2002, 17h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo