该代码用于返回我的本地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)。 在这种情况下,我