Как получить мак адрес удаленного компьютера?
От: java_yyyka  
Дата: 21.12.09 22:52
Оценка:
12 часов убитого об стену времени не дали ничего
Просьба посоветовать...
Как можно определить мак адрес подключенных удаленных машин к серверу средствами java?
Что бы была возможность отслеживать конкретных пользователей не только по айпи. Согласен мак тоже не ахти что, но другого нету.
Постоянных соединений много(тысячи), сервер один.
Вот два варианта. Оба неработают, даже у сетевого интерфейса — нулл.
public String getHWID()
{
String HWIDD = "";
try
{
String address = getConnection().getSocket().getInetAddress().getHostName();
if (address == null) return HWIDD;
NetworkInterface ni = NetworkInterface.getByName(address);
if (ni != null) { byte[] mac = ni.getHardwareAddress(); if (mac != null) { HWIDD = Arrays.toString(mac); return HWIDD;} }

String address2 = getConnection().getSocket().getInetAddress().getHostAddress();
if (address2 == null) return HWIDD;
NetworkInterface ni2 = NetworkInterface.getByName(address2);
if (ni2 != null) { byte[] mac2 = ni2.getHardwareAddress(); if (mac2 != null) { HWIDD = Arrays.toString(mac2); return HWIDD;} }
} catch (SocketException e) { }
return HWIDD;
}


И совершеннно безумный вариант(для такой задачи), но даже он не работает аналогично.

private String getmacbad()
{
try
{
String address = getConnection().getSocket().getInetAddress().getHostAddress();
String macbad = "";
Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces();
for (NetworkInterface netint : Collections.list(nets))
{
if (netint != null)
{
Enumeration<InetAddress> inetAddresses = netint.getInetAddresses();
for (InetAddress inetAddress : Collections.list( inetAddresses))
{
if (address.equals( inetAddress.getHostAddress() ) ) { macbad = Arrays.toString(netint.getHardwareAddress()); _log.warn("IPPP: " + address); return macbad; }
}
}
}
return macbad;
} catch (SocketException e) {return null; }
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.