3
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 地址不同?
它仍然是同一台计算机,为什么它会改变?(这不是唯一的数字吗?)

4

5 回答 5

3

计算机的 IP 地址取决于它所连接的网络(实际上,如果同一台计算机有多个适配器,它可能有多个)。

因此,如果我将我的机器连接到我的一个网络,它可能有地址192.168.10.7,而在我的另一个网络上,它可能是192.168.17.12. 它也可以在连接之间有所不同,尽管在实践中它们往往有点粘。(这取决于 DHCP 服务器的配置方式。)

您的适配器可以配置一个固定地址,但如果您这样做,它必须是它所连接的网络为其保留的地址。否则它可能根本不起作用(“没有到主机的路由”)或者可能与使用网络的另一台机器发生冲突。

于 2013-07-23T14:48:01.810 回答
1

.IP 地址是特定本地网络中网络适配器的地址。

连接到不同的网络时会有所不同。

当未连接到任何网络时,它将是链接本地地址或自动配置地址。

可能需要 MAC 地址,它是单个网络适配器的硬件地址,并且不太可能更改。

于 2013-07-23T14:47:53.023 回答
1

提供的代码返回 HOSTNAME/IP-Address(xx.xx.xx.xx)。

主机名是您的计算机名称,例如:MY-PC,然后您将获得与其对应的 IP。当您连接到网络时,InetAddress.getLocalHost() 会询问网络中的 DHCP 服务器“MY-PC 的地址是什么(您的计算机的名称)”,DHCP 回复 -> 33.44.55.66

在连接和断开连接时尝试以下 CMD 命令。

\>hostname
MY-PC
\>nslookup MY-PC
44.55.66.77

当您未连接到网络时,有两种可能性:

  1. 您没有获得主机名(默认为 localhost)
  2. 您确实获得了主机名,但网络上没有 DHCP 服务器返回 IP 地址,因此您获得了环回 - 127.0.0.1

如果您想在本地“呼叫”网络上的计算机,请使用环回http://www.pcmag.com/encyclopedia/term/57812/loopback-address

希望这可以帮助

于 2013-07-23T16:10:39.257 回答
0

不,您混淆了 IP 和 MAC 地址。MAC 地址是硬件的序列号(但可以在某些芯片组上以编程方式更改)。

IP 地址由软件确定或由网络确定。它可能因网络甚至时间而异。

于 2013-07-23T14:48:32.747 回答
0

IP 地址(通常)是特定于接口的,而不是特定于机器的

如果您的机器只有一个接口,那么区别就没有实际意义,但如果(例如)您同时拥有有线和无线以太网,这很重要。

另请注意,如果您同时拥有两者并尝试在同一子网上同时使用它们,那么事情可能会变得非常混乱!

于 2013-07-23T14:51:35.180 回答