[Java] Obtenga la dirección IP local y la dirección MAC de la tarjeta de red

Ordinario son solo dos palabras: pereza y pereza; el
éxito son solo dos palabras: dificultad y diligencia;
excelencia son solo dos palabras: tú y yo.
Sígueme para aprender JAVA, Spring Family Bucket y el conocimiento de operación y mantenimiento de Linux de 0, y llevarte de un adolescente ignorante a la cima de la vida, ¡y casarte con Bai Fumei!
Siga la cuenta pública de WeChat [  TI es muy confiable  ] y comparta su experiencia técnica todos los días ~

 

Obtenga la dirección IP local y la dirección MAC de la tarjeta de red

1 ¿Qué es una dirección MAC?

      Dirección MAC (en inglés: dirección de control de acceso a medios), traducida literalmente como dirección de control de acceso a medios, también conocida como dirección LAN, dirección MAC, dirección Ethernet o dirección física, Es una dirección que se utiliza para confirmar la ubicación de un dispositivo de red. En el modelo OSI , la tercera capa de red es responsable de las direcciones IP y la segunda capa de enlace de datos es responsable de las direcciones MAC. La dirección MAC se utiliza para identificar de forma única una tarjeta de red en la Red. Si un dispositivo tiene una o más tarjetas de red, ¡cada tarjeta de red tiene una dirección MAC única!

 

2 Obtenga la dirección IP y la dirección MAC

      A continuación, obtenga la dirección IP local y la dirección MAC de la tarjeta de red a través de java.

2.1 Obtener una dirección IP

  /**
   * 获取本机IP地址
   */
  private static String getIpAddress() throws UnknownHostException {
    InetAddress ia = InetAddress.getLocalHost();
    return ia.getHostAddress();
  }

 

2.2 Obtenga la dirección MAC de la tarjeta de red

  /**
   * 获取本机使用网卡的MAC地址
   */
  private static String getMacAddress() throws UnknownHostException, SocketException {
    //获取IP地址,输出示例:WCGZ-DZ-013803/10.88.12.117
    InetAddress ia = InetAddress.getLocalHost();
    //获取网卡的MAC地址
    byte[] mac = NetworkInterface.getByInetAddress(ia).getHardwareAddress();
    StringBuffer sb = new StringBuffer("");
    for (int i = 0; i < mac.length; i++) {
      if (i != 0) {
        sb.append("-");
      }
      //字节转换为整数
      int temp = mac[i] & 0xff;
      String str = Integer.toHexString(temp);
      if (str.length() == 1) {
        sb.append("0" + str);
      } else {
        sb.append(str);
      }
    }
    return sb.toString().toUpperCase();
  }

 

3 Código completo

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class Main {

  public static void main(String[] args) throws UnknownHostException, SocketException {
    //获取本机IP地址
    String ip = getIpAddress();
    //获取本机网卡的MAC地址
    String mac = getMacAddress();
    log.info("IP地址为:{}, 本机网卡MAC地址为:{}", ip, mac);
  }

  /**
   * 获取本机IP地址
   */
  private static String getIpAddress() throws UnknownHostException {
    InetAddress ia = InetAddress.getLocalHost();
    return ia.getHostAddress();
  }

  /**
   * 获取本机使用网卡的MAC地址
   */
  private static String getMacAddress() throws UnknownHostException, SocketException {
    //获取IP地址,输出示例:WCGZ-DZ-013803/10.88.12.117
    InetAddress ia = InetAddress.getLocalHost();
    //获取网卡的MAC地址
    byte[] mac = NetworkInterface.getByInetAddress(ia).getHardwareAddress();
    StringBuffer sb = new StringBuffer("");
    for (int i = 0; i < mac.length; i++) {
      if (i != 0) {
        sb.append("-");
      }
      //字节转换为整数
      int temp = mac[i] & 0xff;
      String str = Integer.toHexString(temp);
      if (str.length() == 1) {
        sb.append("0" + str);
      } else {
        sb.append(str);
      }
    }
    return sb.toString().toUpperCase();
  }
}

 

4 Resultados de la prueba

      Si es útil o necesita soporte técnico, por favor, preste atención ~

 

Supongo que te gusta

Origin blog.csdn.net/IT_Most/article/details/109313606
Recomendado
Clasificación