java如何获得计算机ip地址

java如何获得计算机ip地址

作者:Joshua Lee发布时间:2026-02-10阅读时长:0 分钟阅读次数:4

用户关注问题

Q
如何使用Java代码获取本机的IP地址?

我想通过Java程序获取电脑的IP地址,应该怎么写代码才能实现?

A

Java代码获取本机IP地址的方法

在Java中,可以利用InetAddress类的getLocalHost()方法获取本机地址,然后调用getHostAddress()来得到IP地址。示例代码如下:

import java.net.InetAddress;

public class GetIPAddress {
  public static void main(String[] args) {
    try {
      InetAddress localHost = InetAddress.getLocalHost();
      String ipAddr = localHost.getHostAddress();
      System.out.println("本机IP地址是:" + ipAddr);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}
Q
Java如何获取所有网络接口的IP地址?

我的电脑有多个网络接口,想用Java获取所有接口上的IP地址,应该怎么操作?

A

获取所有网络接口IP地址的Java实现

可以通过Java的NetworkInterface类来遍历所有网络接口,获取各自关联的IP地址。代码示例:

import java.net.*;
import java.util.*;

public class ListAllIP {
  public static void main(String[] args) {
    try {
      Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
      while (interfaces.hasMoreElements()) {
        NetworkInterface ni = interfaces.nextElement();
        Enumeration<InetAddress> addresses = ni.getInetAddresses();
        while (addresses.hasMoreElements()) {
          InetAddress addr = addresses.nextElement();
          System.out.println(ni.getName() + " : " + addr.getHostAddress());
        }
      }
    } catch (SocketException e) {
      e.printStackTrace();
    }
  }
}
Q
Java获取IP地址时如何区分IPv4和IPv6?

用Java获得的IP地址有IPv4和IPv6两种,如何判断并选择其中一种?

A

判断IP地址类型并过滤IPv4或IPv6的方案

获取到InetAddress对象后,可以调用isSiteLocalAddress()和实例of判断类型信息。要筛选IPv4地址,可以检查InetAddress是否是Inet4Address的实例。示例如下:

import java.net.*;

public class FilterIP {
  public static void main(String[] args) throws Exception {
    InetAddress[] addresses = InetAddress.getAllByName(InetAddress.getLocalHost().getHostName());
    for (InetAddress addr : addresses) {
      if (addr instanceof Inet4Address) {
        System.out.println("IPv4地址:" + addr.getHostAddress());
      } else if (addr instanceof Inet6Address) {
        System.out.println("IPv6地址:" + addr.getHostAddress());
      }
    }
  }
}