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

手机站
千锋教育

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

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

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

当前位置:首页  >  千锋问问  > JAVA获取本机ipv4地址怎么操作

JAVA获取本机ipv4地址怎么操作

JAVA获取本机ipv4 匿名提问者 2023-09-12 15:12:15

JAVA获取本机ipv4地址怎么操作

我要提问

推荐答案

  在Java中,你可以使用java.net包提供的InetAddress类来获取本机的IPv4地址。InetAddress类提供了一系列静态方法和实例方法用于获取和操作IP地址。要获取本机的IPv4地址,你可以使用以下示例代码:

千锋教育

  import java.net.InetAddress;

  import java.net.NetworkInterface;

  import java.net.SocketException;

  import java.util.Enumeration;

  public class GetIPv4Address {

  public static void main(String[] args) {

  try {

  Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces();

  while (networkInterfaces.hasMoreElements()) {

  NetworkInterface networkInterface = networkInterfaces.nextElement();

  Enumeration inetAddresses = networkInterface.getInetAddresses();

  while (inetAddresses.hasMoreElements()) {

  InetAddress inetAddress = inetAddresses.nextElement();

  if (!inetAddress.isLoopbackAddress() && inetAddress.getAddress().length == 4) {

  String ipAddress = inetAddress.getHostAddress();

  System.out.println("本机IPv4地址:" + ipAddress);

  }

  }

  }

  } catch (SocketException e) {

  e.printStackTrace();

  }

  }

  }

 

  在上面的示例中,我们通过NetworkInterface.getNetworkInterfaces()方法获取到网络接口的枚举。然后,我们遍历每个网络接口,并通过getInetAddresses()方法获取每个网络接口的IP地址。在遍历IP地址时,我们排除了回环地址并通过getAddress().length判断地址是否为IPv4地址(IPv4地址的长度为4字节)。如果条件成立,我们将IPv4地址输出到控制台。

  输出结果可能类似于:

  本机IPv4地址:192.168.1.100

  通过这种方式,你可以获取到本机的IPv4地址。

其他答案

  •   另一种获取本机的IPv4地址的方法是使用第三方库,如Apache Commons Net库。这个库提供了更多便捷的方法来获取本机的IPv4地址。下面是一个示例代码:

      import org.apache.commons.net.util.SubnetUtils;

      import java.net.InetAddress;

      import java.net.NetworkInterface;

      import java.net.SocketException;

      import java.util.Enumeration;

      public class GetIPv4Address {

      public static void main(String[] args) {

      try {

      Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces();

      while (networkInterfaces.hasMoreElements()) {

      NetworkInterface networkInterface = networkInterfaces.nextElement();

      Enumeration inetAddresses = networkInterface.getInetAddresses();

      while (inetAddresses.hasMoreElements()) {

      InetAddress inetAddress = inetAddresses.nextElement();

      String ipAddress = inetAddress.getHostAddress();

      SubnetUtils.SubnetInfo subnetInfo = new SubnetUtils(ipAddress + "/24").getInfo();

      if (subnetInfo.isInRange(ipAddress) && inetAddress.getAddress().length == 4) {

      System.out.println("本机IPv4地址:" + ipAddress);

      }

      }

      }

      } catch (SocketException e) {

      e.printStackTrace();

      }

      }

      }

      在上面的示例中,我们使用了Apache Commons Net库提供的SubnetUtils类来判断IP地址是否在本机的子网范围内。我们通过调用SubnetUtils(ipAddress + "/24").getInfo()方法创建一个子网工具对象,并通过isInRange(ipAddress)方法判断当前IP地址是否在子网范围内。此外,我们还通过getAddress().length判断地址是否为IPv4地址。

      其他部分的代码与前一个答案类似,遍历网络接口和IP地址,排除回环地址,并输出符合条件的IPv4地址到控制台。

      输出结果可能类似于:

      本机IPv4地址:192.168.1.100

      通过这种方式,你同样可以获取到本机的IPv4地址。

  •   如果你只想获取本机的IPv4地址而不使用第三方库,你可以使用以下示例代码:

      import java.net.InetAddress;

      import java.net.UnknownHostException;

      public class GetIPv4Address {

      public static void main(String[] args) {

      try {

      InetAddress localhost = InetAddress.getLocalHost();

      String ipAddress = "";

      byte[] address = localhost.getAddress();

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

      ipAddress += (address[i] & 0xFF);

      if (i < address.length - 1) {

      ipAddress += ".";

      }

      }

      System.out.println("本机IPv4地址:" + ipAddress);

      } catch (UnknownHostException e) {

      e.printStackTrace();

      }

      }

      }

      在上面示例中,我们通过InetAddress.getLocalHost()方法获取本机的InetAddress对象。接下来,我们通过调用getAddress()方法获取IP地址的字节数组,然后将每个字节转换为无符号整数(使用& 0xFF操作),将它们拼接成IPv4地址字符串。

      输出结果可能类似于:

      本机IPv4地址:192.168.1.100

      通过这种方式,你同样可以获取到本机的IPv4地址。