2013-07-23 105 views
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地址是不同的,当我的无线关闭?
它仍然是同一台计算机,为什么它会改变? (这是不是一个唯一的号码?)无线关闭时为什么ip地址不同?

+0

当它关闭时,ip是什么? 127.0.0.1? – RNJ

+0

当无线打开时,您的计算机是否连接到网络? – jsedano

+1

为什么投票下来? –

回答

3

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

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

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

+0

“,虽然实际上它们往往有点粘。”取决于相关DHCP服务器的配置。 DNS不直接适用于此。 – hexafraction

+0

@hexafraction:LOL我只是补充说,除了我似乎写了DNS。 (哎呀) –

+0

不用担心。 :-) – hexafraction

1

。一个IP地址是在一个特定的本地网络内的网络适配器的地址。

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

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

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

0

不会。您在混淆IP和MAC地址。 MAC地址是硬件的序列号(但可以在某些芯片组上进行编程修改)。

IP地址由软件确定或由网络决定。它可以在网络之间或者甚至与时间不同。

0

IP地址是(通常)接口专用,而不是机器专用

如果你的机器只有一个接口,那么这个区别是没有意义的,但是如果你有(例如)有线和无线以太网,那么它就很重要。

另外请注意,如果你确实有两个,并试图在同一个子网同时使用它们,事情可能会变得非常困惑!

1

提供的代码返回HOSTNAME/IP地址(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. 你得到一个主机名,但没有网络返回指定一个IP地址的DHCP服务器, 等你拿回环 - 127.0.0.1

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

希望这可以帮助

相关问题