当前位置: 首页 > 面试题库 >

在Java中未获取IP地址

严令秋
2023-03-14
问题内容

该代码用于返回我的本地IP地址为192.xxx.x.xxx,但现在它返回127.0.0.1。请帮助我为什么相同的代码返回不同的值。在Linux
OS上需要注意些什么吗?

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

public class GetOwnIP
{
  public static void main(String args[]) {
    try{
      InetAddress ownIP=InetAddress.getLocalHost();
      System.out.println("IP of my system is := "+ownIP.getHostAddress());
    }catch (Exception e){
      System.out.println("Exception caught ="+e.getMessage());
    }
  }
}

问题答案:

127.0.0.1是回送适配器-这是对(有些恶意的)问题“我的IP地址是什么?”的正确答案。

问题是该问题有 多个 正确答案。

编辑:的文档getLocalHost说:

如果有安全管理器,则使用本地主机名并以-1作为其参数来调用其checkConnect方法,以查看是否允许该操作。如果不允许该操作,则返回表示回送地址的InetAddress。

行为更改是否可能是由于权限更改引起的?

编辑:我相信这NetworkInterface.getNetworkInterfaces就是您需要列举所有可能性的东西。这是一个示例,该示例不显示虚拟地址,但适用于“主要”接口:

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

public class Test
{
    public static void main(String[] args)
        throws Exception // Just for simplicity
    {
        for (Enumeration<NetworkInterface> ifaces = 
               NetworkInterface.getNetworkInterfaces();
             ifaces.hasMoreElements(); )
        {
            NetworkInterface iface = ifaces.nextElement();
            System.out.println(iface.getName() + ":");
            for (Enumeration<InetAddress> addresses =
                   iface.getInetAddresses();
                 addresses.hasMoreElements(); )
            {
                InetAddress address = addresses.nextElement();
                System.out.println("  " + address);
            }
        }
    }
}

(我忘记Enumeration<T>了直接使用该类型是多么糟糕!)

现在是我笔记本电脑上的结果:

lo:
  /127.0.0.1
eth0:
  /169.254.148.66
eth1:
eth2:
ppp0:
  /10.54.251.111

(我认为这不会 泄露 任何 非常 敏感的信息:)

如果您知道要使用哪个网络接口,请致电NetworkInterface.getByName(...),然后查看该接口的地址(如上面的代码所示)。



 类似资料:
  • 问题内容: 我不太确定如何获取计算机的外部IP地址,就像网络外部的计算机会看到它一样。 我下面的IPAddress类仅获取计算机的本地IP地址。 问题答案: 我不确定是否可以从在本地计算机上运行的代码中获取该IP。 但是,你可以构建在网站上运行的代码(例如在JSP中运行),然后使用返回请求来源IP的内容: 或者只是使用已经存在的服务来执行此操作,然后解析该服务的答案以找出IP。 使用AWS等Web

  • 问题内容: 我的机器上运行了一个简单的node.js程序,我想获取运行该程序的PC的本地IP地址。如何使用node.js获得它? 问题答案:

  • 问题内容: 我正在尝试使用Java获取我的Internet IP地址,但是当我的IP地址为192.168.0.xxx时,我一直在获取本地地址(即:127.0.0.1) 我正在使用该行: 这似乎是获取IP地址的标准方法,但这不是我想要的。每个教程都说要使用此行,所以我有些困惑。 有人可以让我知道如何获取正确的IP地址吗? 我在连接到WiFi的设备上运行,但未使用任何电缆。我正在使用ifconfig

  • 问题内容: 我想获取计算机的IP地址。我使用了下面的代码,但是返回了。 我想获取IP地址(例如),而不是回送地址。 问题答案: 您需要遍历所有网络接口 播放(取自util / helper.go)

  • 问题内容: 我不是指 127.0.0.1 而是其他计算机将用来访问该计算机的计算机,例如 192.168.1.6 问题答案: http://nodejs.org/api/os.html#os_os_networkinterfaces

  • 问题内容: 我正在尝试开发一个Java Web应用程序(Servlet),该服务器需要获取客户端IP地址。 以下是我到目前为止的代码: 在大多数情况下,我会得到“默认网关地址”(147.120.1.5)。不是我的机器IP地址(174.120.100.17)。 在大多数情况下,我会得到“默认网关地址”(147.120.1.5)。不是我的机器IP地址(174.120.100.17)。 在这种情况下,我