千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  千锋问问  > java获取本机ip和mac怎么操作

java获取本机ip和mac怎么操作

java获取本机ip 匿名提问者 2023-09-12 15:31:24

java获取本机ip和mac怎么操作

我要提问

推荐答案

  要在Java中获取本机的IP地址和MAC地址,可以使用java.net包中的NetworkInterface类和InetAddress类。NetworkInterface类提供了与网络接口相关的信息,包括获取MAC地址。InetAddress类提供了与IP地址相关的方法,包括获取本机的IP地址。下面是一个示例代码,演示如何使用Java获取本机的IP地址和MAC地址:

Java教程

  import java.net.InetAddress;

  import java.net.NetworkInterface;

  import java.net.SocketException;

  import java.net.UnknownHostException;

  import java.util.Enumeration;

  public class GetLocalIPAndMAC {

  public static void main(String[] args) {

  try {

  Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces();

  while (networkInterfaces.hasMoreElements()) {

  NetworkInterface networkInterface = networkInterfaces.nextElement();

  byte[] mac = networkInterface.getHardwareAddress();

  if (mac != null) {

  StringBuilder macAddress = new StringBuilder();

  for (byte b : mac) {

  macAddress.append(String.format("%02X:", b));

  }

  if (macAddress.length() > 0) {

  macAddress.deleteCharAt(macAddress.length() - 1);

  }

  System.out.println("本机MAC地址: " + macAddress.toString());

  }

  Enumeration inetAddresses = networkInterface.getInetAddresses();

  while (inetAddresses.hasMoreElements()) {

  InetAddress inetAddress = inetAddresses.nextElement();

  if (!inetAddress.isLoopbackAddress() && inetAddress.getHostAddress().indexOf(':') == -1) {

  System.out.println("本机IP地址: " + inetAddress.getHostAddress());

  }

  }

  }

  } catch (SocketException e) {

  e.printStackTrace();

  }

  }

  }

   在上面的代码中,我们首先使用getNetworkInterfaces()方法获取本地主机上的网络接口列表。然后,我们迭代每个网络接口,并使用getHardwareAddress()方法获取MAC地址。将MAC地址格式化为人类可读的形式,并打印输出。

  接下来,我们使用getInetAddresses()方法获取与网络接口关联的IP地址列表。我们将过滤掉回环地址和IPv6地址,并打印输出符合条件的IP地址。

  请注意,MAC地址可能不是每个网络接口都可用,并且获取MAC地址需要特定的授权和权限。此外,根据您的网络配置,可能会有一些特殊情况需要考虑,例如虚拟网络接口或使用特定的网络接口。

其他答案

  •   要在Java中获取本机的IP地址和MAC地址,可以使用java.net包中的NetworkInterface类和InetAddress类的组合。NetworkInterface类提供了与网络接口相关的信息,包括获取MAC地址。InetAddress类提供了与IP地址相关的方法,包括获取本机的IP地址。下面是一个示例代码,演示如何使用Java获取本机的IP地址和MAC地址:

      import java.net.InetAddress;

      import java.net.NetworkInterface;

      import java.net.SocketException;

      import java.net.UnknownHostException;

      import java.util.Enumeration;

      public class GetLocalIPAndMAC {

      public static void main(String[] args) {

      try {

      InetAddress localhost = InetAddress.getLocalHost();

      System.out.println("本机IP地址: " + localhost.getHostAddress());

      NetworkInterface networkInterface = NetworkInterface.getByInetAddress(localhost);

      if (networkInterface != null) {

      byte[] mac = networkInterface.getHardwareAddress();

      if (mac != null) {

      StringBuilder macAddress = new StringBuilder();

      for (byte b : mac) {

      macAddress.append(String.format("%02X:", b));

      }

      if (macAddress.length() > 0) {

      macAddress.deleteCharAt(macAddress.length() - 1);

      }

      System.out.println("本机MAC地址: " + macAddress.toString());

      } else {

      System.out.println("无法获取MAC地址");

      }

      } else {

      System.out.println("无法获取网络接口");

      }

      } catch (UnknownHostException | SocketException e) {

      e.printStackTrace();

      }

      }

      }

      在上述代码中,我们首先使用getLocalHost()方法获取表示本地主机的InetAddress对象,并使用getHostAddress()方法获取本地主机的IP地址。将IP地址打印输出。

      接下来,我们使用getByInetAddress()方法从本地主机的NetworkInterface对象获取对应的网络接口。然后,我们使用getHardwareAddress()方法获取MAC地址,并将其格式化为人类可读的形式,并进行打印输出。

      需要注意的是,获取MAC地址可能需要特定的授权和权限,并且某些网络接口可能不支持获取MAC地址。在某些情况下,可能无法获得MAC地址,因此代码中包含了相关的错误处理。

  •   要在Java中获取本机的IP地址和MAC地址,可以使用java.net包中的NetworkInterface类和InetAddress类。NetworkInterface类提供了与网络接口相关的信息,包括获取MAC地址。InetAddress类提供了与IP地址相关的方法,包括获取本机的IP地址。下面是一个示例代码,演示如何使用Java获取本机的IP地址和MAC地址:

      import java.net.InetAddress;

      import java.net.NetworkInterface;

      import java.net.SocketException;

      import java.net.UnknownHostException;

      import java.util.Enumeration;

      public class GetLocalIPAndMAC {

      public static void main(String[] args) {

      try {

      InetAddress localhost = InetAddress.getLocalHost();

      System.out.println("本机IP地址: " + localhost.getHostAddress());

      Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces();

      while (networkInterfaces.hasMoreElements()) {

      NetworkInterface networkInterface = networkInterfaces.nextElement();

      if (networkInterface.getHardwareAddress() == null) {

      continue;

      }

      if (networkInterface.isLoopback() || networkInterface.isVirtual() || networkInterface.isPointToPoint()) {

      continue;

      }

      byte[] mac = networkInterface.getHardwareAddress();

      StringBuilder macAddress = new StringBuilder();

      for (int i = 0; i < mac.length; i++) {

      macAddress.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? ":" : ""));

      }

      System.out.println("本机MAC地址: " + macAddress.toString());

      }

      } catch (UnknownHostException | SocketException e) {

      e.printStackTrace();

      }

      }

      }

      在上述代码中,我们首先使用getLocalHost()方法获取表示本地主机的InetAddress对象,并使用getHostAddress()方法获取本地主机的IP地址。将IP地址打印输出。

      接下来,我们使用getNetworkInterfaces()方法获取本地主机上的网络接口列表。然后,我们迭代每个网络接口,并使用getHardwareAddress()方法获取MAC地址。我们还添加了一些筛选条件,过滤掉回环接口、虚拟接口和点对点接口。

      最后,我们将MAC地址格式化为人类可读的形式,并进行打印输出。

      需要注意的是,获取MAC地址可能需要特定的授权和权限,并且某些网络接口可能不支持获取MAC地址。在某些情况下,可能无法获得MAC地址,因此代码中包含了相关的错误处理。