2013-07-23 81 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

希望這可以幫助

相關問題