java如何查询服务器ip

java如何查询服务器ip

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

用户关注问题

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

我想在Java程序中获取当前运行服务器的IP地址,该怎么实现?

A

使用Java获取本机IP地址的方法

可以通过Java的InetAddress类获取本机的IP地址。使用InetAddress.getLocalHost().getHostAddress()方法即可获得服务器的IP。例如:

import java.net.InetAddress;

public class GetIPAddress {
    public static void main(String[] args) throws Exception {
        InetAddress ip = InetAddress.getLocalHost();
        System.out.println("IP地址:" + ip.getHostAddress());
    }
}

这段代码会打印出服务器的IPv4地址。

Q
Java程序如何获取多个网卡的IP地址?

服务器有多个网卡接口,我希望Java程序能够遍历所有网卡并获取对应的IP地址,应该如何操作?

A

通过NetworkInterface获取所有网卡IP地址

Java提供NetworkInterface类用于访问系统的网络接口。通过遍历所有NetworkInterface并获取其InetAddress,可以获得多个网卡的IPv4和IPv6地址。示例代码:

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

public class ListAllIPs {
    public static void main(String[] args) throws Exception {
        Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces();
        for (NetworkInterface netint : Collections.list(nets)) {
            Enumeration<InetAddress> inetAddresses = netint.getInetAddresses();
            for (InetAddress inetAddress : Collections.list(inetAddresses)) {
                System.out.printf("%s: %s\n", netint.getName(), inetAddress.getHostAddress());
            }
        }
    }
}

运行该程序即可列出服务器所有网卡及对应的IP地址。

Q
如何判断Java程序中获取的IP地址是IPv4还是IPv6?

从服务器中获取IP地址后,怎么判断这是IPv4地址还是IPv6地址?

A

判断IP地址类型的方法

IPv4地址是点分十进制格式(如192.168.1.1),而IPv6地址是冒号分隔的十六进制格式(如fe80::1)。在Java中,可以通过InetAddress的子类来区分:

  • 如果是Inet4Address实例,表示IPv4地址
  • 如果是Inet6Address实例,则表示IPv6地址

示例判断代码:

InetAddress address = InetAddress.getLocalHost();
if (address instanceof java.net.Inet4Address) {
    System.out.println("IPv4地址:" + address.getHostAddress());
} else if (address instanceof java.net.Inet6Address) {
    System.out.println("IPv6地址:" + address.getHostAddress());
}