Maison Java javaDidacticiel Plusieurs exemples de méthodes pour obtenir l'adresse IP de l'utilisateur MAC

Plusieurs exemples de méthodes pour obtenir l'adresse IP de l'utilisateur MAC

May 05, 2017 pm 02:25 PM

Cet article présente principalement divers exemples de méthodes pour obtenir l'adresse MAC de l'utilisateur en JAVA. Les amis dans le besoin peuvent se référer à la

Méthode Java pour obtenir l'adresse MAC de l'utilisateur :

Méthode 1 : Distinguer l'adresse de la machine locale des autres machines du LAN

/**
  * 根据IP地址获取mac地址
  * @param ipAddress 127.0.0.1
  * @return
  * @throws SocketException
  * @throws UnknownHostException
  */
 public static String getLocalMac(String ipAddress) throws SocketException,
   UnknownHostException {
  // TODO Auto-generated method stub
  String str = "";
  String macAddress = "";
  final String LOOPBACK_ADDRESS = "127.0.0.1";
  // 如果为127.0.0.1,则获取本地MAC地址。
  if (LOOPBACK_ADDRESS.equals(ipAddress)) {
   InetAddress inetAddress = InetAddress.getLocalHost();
   // 貌似此方法需要JDK1.6。
   byte[] mac = NetworkInterface.getByInetAddress(inetAddress)
     .getHardwareAddress();
   // 下面代码是把mac地址拼装成String
   StringBuilder sb = new StringBuilder();
   for (int i = 0; i < mac.length; i++) {
    if (i != 0) {
     sb.append("-");
    }
    // mac[i] & 0xFF 是为了把byte转化为正整数
    String s = Integer.toHexString(mac[i] & 0xFF);
    sb.append(s.length() == 1 ? 0 + s : s);
   }
   // 把字符串所有小写字母改为大写成为正规的mac地址并返回
   macAddress = sb.toString().trim().toUpperCase();
   return macAddress;
  } else {
   // 获取非本地IP的MAC地址
   try {
    System.out.println(ipAddress);
    Process p = Runtime.getRuntime()
      .exec("nbtstat -A " + ipAddress);
    System.out.println("===process=="+p);
    InputStreamReader ir = new InputStreamReader(p.getInputStream());      
    BufferedReader br = new BufferedReader(ir);    
    while ((str = br.readLine()) != null) {
     if(str.indexOf("MAC")>1){
      macAddress = str.substring(str.indexOf("MAC")+9, str.length());
      macAddress = macAddress.trim();
      System.out.println("macAddress:" + macAddress);
      break;
     }
    }
    p.destroy();
    br.close();
    ir.close();
   } catch (IOException ex) {
   }
   return macAddress;
  }
 }
Copier après la connexion

Regardons la méthode 2 :

package com.alpha.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.LineNumberReader; 
public class GetMac { 
  /**
   * java获取客户端网卡的MAC地址
   * 
   * @param args
   */
  public static void main(String[] args) {
    GetMac get = new GetMac();
    System.out.println("1="+get.getMAC());
    System.out.println("2="+get.getMAC("127.0.0.1"));
  } 
  // 1.获取客户端ip地址( 这个必须从客户端传到后台):
  // jsp页面下,很简单,request.getRemoteAddr() ;
  // 因为系统的VIew层是用JSF来实现的,因此页面上没法直接获得类似request,在bean里做了个强制转换 
  // public String getMyIP() {
  // try {
  // FacesContext fc = FacesContext.getCurrentInstance();
  // HttpServletRequest request = (HttpServletRequest) fc
  // .getExternalContext().getRequest();
  // return request.getRemoteAddr();
  // } catch (Exception e) {
  // e.printStackTrace();
  // }
  // return "";
  // } 
  // 2.获取客户端mac地址
  // 调用window的命令,在后台Bean里实现 通过ip来获取mac地址。方法如下:
  // 运行速度【快】
  public String getMAC() {
    String mac = null;
    try {
      Process pro = Runtime.getRuntime().exec("cmd.exe /c ipconfig/all"); 
      InputStream is = pro.getInputStream();
      BufferedReader br = new BufferedReader(new InputStreamReader(is));
      String message = br.readLine(); 
      int index = -1;
      while (message != null) {
        if ((index = message.indexOf("Physical Address")) > 0) {
          mac = message.substring(index + 36).trim();
          break;
        }
        message = br.readLine();
      }
      System.out.println(mac);
      br.close();
      pro.destroy();
    } catch (IOException e) {
      System.out.println("Can&#39;t get mac address!");
      return null;
    }
    return mac;
  }
  // 运行速度【慢】
  public String getMAC(String ip) {
    String str = null;
    String macAddress = null;
    try {
      Process p = Runtime.getRuntime().exec("nbtstat -A " + ip);
      InputStreamReader ir = new InputStreamReader(p.getInputStream());
      LineNumberReader input = new LineNumberReader(ir);
      for (; true;) {
        str = input.readLine();
        if (str != null) {
          if (str.indexOf("MAC Address") > 1) {
            macAddress = str
                .substring(str.indexOf("MAC Address") + 14);
            break;
          }
        }
      }
    } catch (IOException e) {
      e.printStackTrace(System.out);
      return null;
    }
    return macAddress;
  }
}
Copier après la connexion

La troisième méthode est plus concise :

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
public class MACAddress {
 String ip;
 String mac;
 public MACAddress (String ip){
 this.ip = ip;
 }
 public MACAddress (){
 this.ip = "0.0.0.0";
 }
 public String getMac(){
 try {
 Process p = Runtime.getRuntime().exec("arp -n");
  InputStreamReader ir = new InputStreamReader(p.getInputStream());
  LineNumberReader input = new LineNumberReader(ir);
  p.waitFor();
  boolean flag = true;
  String ipStr = "(" + this.ip + ")";
  while(flag) {
  String str = input.readLine();
  if (str != null) {
   if (str.indexOf(ipStr) > 1) {
   int temp = str.indexOf("at");
   this.mac = str.substring(
   temp + 3, temp + 20);
   break;
   }
  } else
  flag = false;
  }
 } catch (IOException | InterruptedException e) {
  e.printStackTrace(System.out);
 }
 return this.mac;
 }
 public void setIp(String ip){
 this.ip = ip;
 }
}
Copier après la connexion

Enfin, nous devons agrandir le déménagement, mes amis, veuillez faire attention attentivement

Tout d'abord, je Je dois dire de plus : cette méthode peut prendre en charge l'obtention de l'adresse MAC de la machine réseau externe.

J'en avais un qui ne pouvait accéder qu'au LAN. Vous ne pouvez pas y accéder si vous disposez d'un pare-feu, mais vous n'avez pas à vous en soucier.

Testé l'adresse IP de Baidu et peut déjà obtenir l'adresse Mac

Java obtient l'adresse Mac via IP - bloquer l'adresse IP bloquer l'adresse Mac

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern; 
/**
* 获取MAC地址
* @author
* 2011-12
*/
public class GetMacAddress {
  public static String callCmd(String[] cmd) { 
   String result = ""; 
   String line = ""; 
   try { 
    Process proc = Runtime.getRuntime().exec(cmd); 
    InputStreamReader is = new InputStreamReader(proc.getInputStream()); 
    BufferedReader br = new BufferedReader (is); 
    while ((line = br.readLine ()) != null) { 
    result += line; 
    } 
   } 
   catch(Exception e) { 
    e.printStackTrace(); 
   } 
   return result; 
  }
  /** 
  * 
  * @param cmd 第一个命令 
  * @param another 第二个命令 
  * @return 第二个命令的执行结果 
  */
  public static String callCmd(String[] cmd,String[] another) { 
   String result = ""; 
   String line = ""; 
   try { 
    Runtime rt = Runtime.getRuntime(); 
    Process proc = rt.exec(cmd); 
    proc.waitFor(); //已经执行完第一个命令,准备执行第二个命令 
    proc = rt.exec(another); 
    InputStreamReader is = new InputStreamReader(proc.getInputStream()); 
    BufferedReader br = new BufferedReader (is); 
    while ((line = br.readLine ()) != null) { 
     result += line; 
    } 
   } 
   catch(Exception e) { 
    e.printStackTrace(); 
   } 
   return result; 
  }
  /** 
  * 
  * @param ip 目标ip,一般在局域网内 
  * @param sourceString 命令处理的结果字符串 
  * @param macSeparator mac分隔符号 
  * @return mac地址,用上面的分隔符号表示 
  */
  public static String filterMacAddress(final String ip, final String sourceString,final String macSeparator) { 
   String result = ""; 
   String regExp = "((([0-9,A-F,a-f]{1,2}" + macSeparator + "){1,5})[0-9,A-F,a-f]{1,2})"; 
   Pattern pattern = Pattern.compile(regExp); 
   Matcher matcher = pattern.matcher(sourceString); 
   while(matcher.find()){ 
    result = matcher.group(1); 
    if(sourceString.indexOf(ip) <= sourceString.lastIndexOf(matcher.group(1))) { 
     break; //如果有多个IP,只匹配本IP对应的Mac. 
    } 
   }  
   return result; 
  }   
  /** 
  * 
  * @param ip 目标ip 
  * @return Mac Address 
  * 
  */
  public static String getMacInWindows(final String ip){ 
   String result = ""; 
   String[] cmd = { 
     "cmd", 
     "/c", 
     "ping " + ip 
     }; 
   String[] another = { 
     "cmd", 
     "/c", 
     "arp -a"
     }; 
   String cmdResult = callCmd(cmd,another); 
   result = filterMacAddress(ip,cmdResult,"-"); 
   return result; 
  }  
  /** 
  * @param ip 目标ip 
  * @return Mac Address 
  * 
  */
  public static String getMacInLinux(final String ip){ 
   String result = ""; 
   String[] cmd = { 
     "/bin/sh", 
     "-c", 
     "ping " + ip + " -c 2 && arp -a"
     }; 
   String cmdResult = callCmd(cmd); 
   result = filterMacAddress(ip,cmdResult,":"); 
   return result; 
  }  
  /**
  * 获取MAC地址 
  * @return 返回MAC地址
  */
  public static String getMacAddress(String ip){
   String macAddress = "";
   macAddress = getMacInWindows(ip).trim();
   if(macAddress==null||"".equals(macAddress)){
    macAddress = getMacInLinux(ip).trim();
   }
   return macAddress;
  }
  //做个测试
  public static void main(String[] args) {   
   System.out.println(getMacAddress("220.181.111.148"));
  }
 }
Copier après la connexion

[Recommandations associées 】

1. Tutoriel vidéo gratuit Java

2 Manuel du didacticiel JAVA

3. Annotation Java

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Pas de réponse lors de la saisie du mot de passe sur le clavier Mac ? Pas de réponse lors de la saisie du mot de passe sur le clavier Mac ? Feb 20, 2024 pm 01:33 PM

Introduction : Dans cet article, ce site Web vous présentera le contenu pertinent sur le clavier Mac qui ne répond pas lors de la saisie des mots de passe. J'espère que cela vous sera utile, jetons un coup d'œil. Comment résoudre le problème de l'impossibilité de saisir le mot de passe sur le système Apple Mac ? Vous pouvez également essayer de connecter ce clavier à d'autres ordinateurs pour voir s'il fonctionne normalement ? Si le même problème se produit sur un autre ordinateur, il s'agit probablement d'un problème lié au clavier lui-même. Vous pouvez envisager de remplacer le clavier ou de le réparer. La première fois que vous vous connectez à Alipay avec votre ordinateur Mac, vous trouverez l'interface de connexion et ne pourrez pas saisir votre mot de passe. Le champ de saisie du mot de passe affiche : « Veuillez cliquer ici pour installer le contrôle », la connexion Alipay nécessite donc l'installation de contrôles de sécurité. Les contrôles de sécurité peuvent crypter et protéger les informations que vous saisissez (montant, mot de passe, etc.) pour améliorer la sécurité du compte. Cravate

3 conseils pour personnaliser facilement le nom de votre ordinateur Mac, le nom d'hôte et le nom Bonjour 3 conseils pour personnaliser facilement le nom de votre ordinateur Mac, le nom d'hôte et le nom Bonjour Mar 06, 2024 pm 12:20 PM

De nombreux utilisateurs de Mac ont tendance à conserver le nom par défaut de leur appareil et n'envisageront peut-être jamais de le modifier. De nombreuses personnes choisissent de conserver le nom de la configuration initiale, comme « Johnny's MacBook Air » ou simplement « iMac ». Apprendre à changer le nom de votre Mac est une compétence très utile, surtout lorsque vous possédez plusieurs appareils, car cela peut vous aider à les distinguer et à les gérer rapidement. Ensuite, nous vous apprendrons étape par étape comment modifier le nom de l'ordinateur, le nom d'hôte et le nom Bonjour (nom d'hôte local) dans le système macOS. Pourquoi devriez-vous changer le nom de votre Mac ? Changer le nom de votre Mac peut non seulement montrer votre personnalité, mais également contribuer à améliorer l'expérience utilisateur : Personnalisez votre Mac : Le nom par défaut n'est peut-être pas à votre goût, remplacez-le par un nom que vous aimez.

Vous avez oublié votre mot de passe d'installation Mac ? Vous avez oublié votre mot de passe d'installation Mac ? Feb 20, 2024 pm 01:00 PM

Introduction : Dans cet article, ce site Web vous présentera le contenu pertinent sur l'oubli du mot de passe du programme d'installation Mac. J'espère que cela vous sera utile, jetons un coup d'œil. Que faire si vous oubliez votre mot de passe pour le logiciel d'installation de l'ordinateur Apple Tout d'abord, recherchez iCloud dans les paramètres du téléphone et cliquez pour l'ouvrir. Ensuite, entrez votre numéro de compte et votre mot de passe. Il y a une ligne de petits mots sous le bouton de connexion qui vous demande si vous avez oublié votre identifiant ou votre mot de passe. Cliquez sur cette option. Normalement, lorsque vous saisissez plusieurs fois un mot de passe incorrect sur l'interface de connexion, votre MacBook Pro vous invite à utiliser votre identifiant Apple lié pour réinitialiser votre mot de passe. Il vous suffit de suivre les étapes demandées par le système pour terminer la réinitialisation du mot de passe. 3. Éteignez d'abord votre Mac, puis redémarrez-le. Tout en appuyant sur le bouton d'alimentation, appuyez immédiatement sur com sur le clavier.

pkg à installer sur mac ? pkg à installer sur mac ? Feb 20, 2024 pm 03:21 PM

Préface : Aujourd'hui, ce site partagera avec vous le contenu pertinent sur l'installation des fichiers pkg sur Mac. Si cela peut résoudre le problème auquel vous êtes actuellement confronté, n'oubliez pas de suivre ce site et de commencer maintenant ! La version précédente de macos pkg ne peut pas être installée pour mettre à niveau le système d'exploitation : Si votre ordinateur portable utilise une ancienne version du système d'exploitation, il est recommandé de passer à la dernière version du système d'exploitation. Parce que les anciennes versions peuvent ne pas prendre en charge l'installation du dernier système macOS. Sélectionnez "Effacer" dans Utilitaire de disque, puis sélectionnez l'extension Macos dans le format, ne cochez pas l'option de cryptage et ne sélectionnez pas le format apfs, et enfin cliquez sur le bouton "Effacer" pour résoudre le problème de l'impossibilité de terminer le Installation MacOS. Faites glisser l'icône de l'application vers le fichier commençant par App

Comment tourner les pages en tapant sur Apple Mac ? Comment tourner les pages en tapant sur Apple Mac ? Feb 20, 2024 pm 12:54 PM

Introduction : Aujourd'hui, ce site partagera avec vous du contenu pertinent sur la façon de tourner les pages lors de la saisie sur Apple Mac. Si cela peut résoudre le problème auquel vous êtes actuellement confronté, n'oubliez pas de suivre ce site et de commencer maintenant ! Conseils pour utiliser le pavé tactile sur les ordinateurs portables Apple MacBook Les étapes de configuration du glissement à deux doigts sur les ordinateurs Apple sont les suivantes : Recherchez l'icône « Paramètres » sur le bureau de l'ordinateur et cliquez dessus. Sélectionnez « Pavé tactile » dans l'interface des paramètres, puis cliquez sur « Faire défiler pour zoomer ». Cochez « Direction de défilement : Naturel » dans les options de zoom de défilement pour terminer le réglage. La configuration d’une méthode de balayage à deux doigts sur votre ordinateur Apple est simple. Tout d’abord, allumez votre ordinateur et cliquez sur l’icône Paramètres en haut de l’écran. Dans l'interface des paramètres, sélectionnez l'option "Pavé tactile". Cliquez ensuite sur "Scroll Zoom" et assurez-vous que "Scroll Direction" est coché

Comment configurer WeChat Mac pour convertir automatiquement les messages vocaux en texte - Comment configurer la conversion voix en texte Comment configurer WeChat Mac pour convertir automatiquement les messages vocaux en texte - Comment configurer la conversion voix en texte Mar 19, 2024 am 08:28 AM

Récemment, certains amis ont demandé à l'éditeur comment configurer WeChat Mac pour convertir automatiquement les messages vocaux en texte ? Voici une méthode pour configurer WeChat Mac pour convertir automatiquement les messages vocaux en texte. Les amis dans le besoin peuvent venir en savoir plus. Étape 1 : Tout d’abord, ouvrez la version Mac de WeChat. Comme le montre l'image : Étape 2 : Ensuite, cliquez sur « Paramètres ». Comme le montre l'image : Étape 3 : Ensuite, cliquez sur « Général ». Comme le montre l'image : Étape 4 : Cochez ensuite l'option « Convertir automatiquement les messages vocaux du chat en texte ». Comme le montre l'image : Étape 5 : Enfin, fermez la fenêtre. Comme le montre l'image :

Mac peut-il couper des fichiers sur le disque dur ? Mac peut-il couper des fichiers sur le disque dur ? Feb 20, 2024 pm 01:00 PM

Introduction : Cet article est là pour vous présenter le contenu pertinent de la découpe de fichiers sur le disque dur sur Mac. J'espère qu'il vous sera utile, jetons un coup d'œil. Comment exporter des photos vers un disque dur mobile sur un ordinateur Mac Vous pouvez utiliser l'application Finder ou Photos pour exporter des photos vers un disque dur mobile. Lorsque vous utilisez le Finder pour exporter des photos, assurez-vous d'abord que le disque dur mobile est connecté au Mac et qu'il est reconnu avec succès par le Mac. Les étapes pour transférer des photos d'un Mac vers le disque dur sont simples : connectez d'abord le disque dur mobile à l'ordinateur, puis ouvrez l'icône [Lanceur]. Ensuite, recherchez et cliquez sur l'icône [Photos] dans la fenêtre contextuelle. Dans la fenêtre [Photos] ouverte, maintenez la touche [Shift] enfoncée

Méthode de démarrage Mac Black Apple ? Méthode de démarrage Mac Black Apple ? Feb 20, 2024 pm 01:00 PM

Préface : Cet article est là pour vous présenter le contenu pertinent sur la méthode de démarrage Mac Black Apple. J'espère qu'il vous sera utile, jetons un coup d'œil. Tutoriel de configuration rapide du démarrage Black Apple OC 1. Après être entré dans l'interface du logiciel LoverConfigurator, cliquez sur le paramètre "Paramètres de démarrage". Le nom du volume de démarrage par défaut est défini sur le nom du disque qui a été effacé lors de l'installation du système Black Apple. 0, puis cliquez sur Enregistrer dans le coin inférieur droit, redémarrez l'ordinateur et remplacez l'interface de démarrage amoureux par l'interface de démarrage du logo Apple. Secure Boot empêche efficacement les chargeurs de démarrage non signés de démarrer à partir de n'importe quel disque interne ou clé USB. Cependant, Clover ou OC boot ne prend pas en charge la fonction de démarrage sécurisé. Commencer

See all articles