public class Main {
public static void main(String[] args) throws IOException {
InetAddress myIp = null;
try {
myIp = InetAddress.getLocalHost();
} catch (UnknownHostException ex) {
System.out.println("Exception cought.");
System.exit(0);
}
System.out.println(myIp);
}
}
我有这个简单的问题,为什么我的无线网络关闭时我的IP地址不同? 它仍然是同一台计算机,为什么它会改变? (这不是一个唯一的号码吗?)
答案 0 :(得分:3)
计算机的IP地址取决于它所连接的网络(实际上,如果它有多个adapers,同一台机器可能有多个)。
因此,如果我将我的机器连接到我的某个网络,它可能具有地址192.168.10.7
,而在我的另一个网络上,它可能是192.168.17.12
。它也可以在不同的连接之间变化,但在实践中它们往往有点粘。 (这取决于DHCP服务器的配置方式。)
您的适配器可以配置固定地址,但如果您这样做,它必须是它所连接的网络为其保留的地址。否则它可能根本不起作用(“无主机路由”)或可能与使用网络的另一台机器冲突。
答案 1 :(得分:1)
.IP地址是特定本地网络中的网络适配器的地址。
连接到不同的网络时会有所不同。
未连接到任何网络时,它将是链接本地地址或自动配置地址。
您可能想要MAC地址,这是单个网络适配器的硬件地址,并且不太可能发生变化。
答案 2 :(得分:1)
提供的代码返回HOSTNAME / IP-Address(xx.xx.xx.xx)。
主机名是您的计算机名称ex:MY-PC,然后您将获得与之对应的IP。 当您连接到网络时,InetAddress.getLocalHost()会询问网络中的DHCP服务器“MY-PC的地址(您的计算机名称)是什么”,DHCP回复 - > 33.44.55.66
连接和断开连接时,请尝试以下CMD命令。
\>hostname
MY-PC
\>nslookup MY-PC
44.55.66.77
当您未连接到网络时,有两种可能性:
如果您想在本地“呼叫”网络上的计算机,请使用环回http://www.pcmag.com/encyclopedia/term/57812/loopback-address
希望这有帮助
答案 3 :(得分:0)
没有。你混淆了IP和MAC地址。 MAC地址是硬件的序列号(但可能在某些芯片组上以编程方式更改)。
IP地址由软件确定或由网络确定。它可以在网络之间或甚至时间上有所不同。
答案 4 :(得分:0)
IP地址(通常)接口特定,而不是特定于机器。
如果您的机器只有一个接口,那么差异就没有实际意义,但是(例如)您有有线和无线以太网都很重要。
另请注意,如果您同时使用它们并尝试同时使用它们在同一子网上,那么事情可能会非常混乱!