2013-07-23 3 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. (Oops) –

+0

Не беспокойтесь. :-) – hexafraction

1

. IP-адрес - это адрес сетевого адаптера в той или иной локальной сети.

Это будет отличаться при подключении к различным сетям.

Если вы не подключены к какой-либо сети, это будет либо локальный адрес ссылки, либо адрес автоматической конфигурации.

может нужен MAC-адрес, который является аппаратным адресом одного сетевого адаптера и вряд ли изменится.

0

Нет. Вы вводите в заблуждение IP-адреса и MAC-адреса. MAC-адрес - это серийный номер аппаратного обеспечения (но может быть программно изменен на некоторых наборах микросхем).

IP-адрес либо определяется программным обеспечением, либо определяется сетью. Он может различаться между сетями или даже со временем.

0

IP-адреса (обычно) специфический интерфейс, а не тип машины.

Если ваша машина имеет только один интерфейс разница является спорной, но это имеет значение, если (например) вы как проводные, так и беспроводные локальные сети.

Также обратите внимание, что если у вас есть и то и другое, но и в то же время в той же подсети, что вещи, вероятно, будут очень смущены!

1

Предоставленный код возвращает HOSTNAME/IP-адрес (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 

Когда вы не подключены к сети, не существует две возможности:

  1. Вы не получите имя хоста (по умолчанию локальный)
  2. Вы получаете имя хоста, но нет DHCP-сервер в сети, чтобы вернуть Ipaddress, так что вы получите кольцевой проверки - 127.0.0.1

Если вы хотите «позвонить» ваш компьютер в сети локально, используйте т он LoopBack http://www.pcmag.com/encyclopedia/term/57812/loopback-address

Надеется, что это помогает

Смежные вопросы