gpt4 book ai didi

java - 关于如何在 Java 中检索多个 IP 地址(如果我有多个网卡)的一些疑问?

转载 作者:搜寻专家 更新时间:2023-11-01 01:43:29 25 4
gpt4 key购买 nike

我在检索客户端的 ip 时遇到以下 2 个问题。

我在类中创建了以下代码:

private static InetAddress thisIp;

static{
try {
thisIp = InetAddress.getLocalHost();
System.out.println("MyIp is: " + thisIp);
} catch(UnknownHostException ex) {

}
}

我的问题是:

1) 前面的代码应该检索客户端的 IP 地址,当我执行它时它会打印以下消息:

我的IP是:andrea-virtual-machine/127.0.1.1

为什么它以 andrea-virtual-machine/ 开头? (我在虚拟机上开发),是不是有问题?

2) 通过这种方式,我只能检索一个 IP 地址,但我可以拥有多个网卡,因此我可以拥有多个 IP 地址,但多个 IP 地址

我该怎么做才能处理这种情况?我想将所有多个IP地址放入一个ArrayList

谢谢

安德里亚

最佳答案

  1. 不,这不是问题,它只是一个由主机名和 IP (hostname/ip) 组成的输出。您可能想要阅读的详细信息:InetAddress 类中的方法 toString() 已实现以返回此格式。

  2. 以下代码将列出您系统中每个接口(interface)的所有 IP 地址(并​​将它们存储在一个列表中,然后您可以传递等等...):

    public static void main(String[] args) throws InterruptedException, IOException
    {
    List<String> allIps = new ArrayList<String>();
    Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces();
    while (e.hasMoreElements())
    {
    NetworkInterface n = e.nextElement();
    System.out.println(n.getName());
    Enumeration<InetAddress> ee = n.getInetAddresses();
    while (ee.hasMoreElements())
    {
    InetAddress i = ee.nextElement();
    System.out.println(i.getHostAddress());
    allIps.add(i.getHostAddress());
    }
    }
    }

boolean isLoopbackAddress() 方法允许您过滤可能不需要的环回地址。

返回的 InetAddressInet4AddressInet6Address,使用 instanceof 您可以确定是否返回的 IP 为 IPv4 或 IPv6 格式。

关于java - 关于如何在 Java 中检索多个 IP 地址(如果我有多个网卡)的一些疑问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20350150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com