2013-09-09 5 views
1

Я хочу получить IP-адрес и MAC-адрес моего компьютера. Я использовал следующий код, чтобы сделать это:Получение адресов IP и MAC

InetAddress ip; 
try { 

    ip = InetAddress.getLocalHost(); 
    System.out.println("Current IP address : " + ip.getHostAddress()); 

    NetworkInterface network = NetworkInterface.getByInetAddress(ip); 

    byte[] mac = network.getHardwareAddress(); 

    System.out.print("Current MAC address : "); 

    StringBuilder sb = new StringBuilder(); 
    for (int i = 0; i < mac.length; i++) { 
     sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));   
    } 
    System.out.println(sb.toString()); 

} catch (UnknownHostException e) { 

    e.printStackTrace(); 

} catch (SocketException e){ 

    e.printStackTrace(); 

} 

Он работал тоже, но несколько раз один и тот же код печатает IP как 127.0.0.1 и не печатаюсь MAC-адреса. Как так?

+0

этот код работает на апплета или Java приложение на клиенте или на сервере? – tgkprog

ответ

4

127.0.0.1 - это кольцевой адрес, который всегда существует (*).

Лучшим способом получения значения будет получение всех сетевых интерфейсов (http://docs.oracle.com/javase/6/docs/api/java/net/NetworkInterface.html#getNetworkInterfaces()) и фильтрация тех, чей IP начинается с 127.

(*) За исключением окон машин, где отсоединяется сетевой кабель ...

+0

Я хочу идентифицировать клиентский компьютер ... здесь я получаю адрес mac от ip, я получил InetAddress.getLocalHost() .., который иногда дает loopback-адрес .... есть ли какой-либо способ gettig mac без ip –

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