Java - MAC Address cual esta activo?

 
Vista:
sin imagen de perfil
Val: 111
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

MAC Address cual esta activo?

Publicado por Gonzalo (112 intervenciones) el 21/04/2015 23:41:22
estoy usando este codigo para detectar el MAC Address en windows, pero tengo el problema de que esta pc tiene 3 tarjetas de red, la whireless y 2 cableadas.

como puedo detectar cual es la que esta usando para entrar a internet?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public static void main(String[] args) {
  try {
    InetAddress ip = InetAddress.getLocalHost();
    System.out.println("Current IP address : " + ip.getHostAddress());
 
    Enumeration<NetworkInterface> networks = NetworkInterface.getNetworkInterfaces();
    while(networks.hasMoreElements()) {
      NetworkInterface network = networks.nextElement();
      byte[] mac = network.getHardwareAddress();
 
      if(mac != null) {
        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();
  }
}

Gracias por la ayuda.

salu2
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

MAC Address cual esta activo?

Publicado por Tom (1831 intervenciones) el 22/04/2015 11:39:53
Pues tienes que acotar más el problema. En principio, las 3 se pueden estar usando para cualquier cosa, así que tienes que definir bien qué es "entrar a internet".
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 111
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

MAC Address cual esta activo?

Publicado por Gonzalo (112 intervenciones) el 22/04/2015 17:07:18
tienes razon, cualquiera de las 3 incluso las 3 se pueden usar para entrar a internet.

hay alguna forma de definir cual es la principal?

o en que orden estan registradas para tomar ya sea la primera o la ultima?

estoy tomando el MAC address para definir un acceso a un programa, no encuentro ningun algoritmo para obtener el numero del procesador, asi que buscando me encontre el MAC que es una clave unica para la tarjeta de red asi que estoy tomando ese numero como referencia pero tengo el problema de que hay equipos con 2, 3 y hasta 4 tarjetas de red diferentes.

pense en el numero del mother board pero tampoco hay bibliografia.

alguna sugerencia?

salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

MAC Address cual esta activo?

Publicado por Tom (1831 intervenciones) el 22/04/2015 18:29:34
Igual me equivoco pero parece que lo que quieres hacer es algo así como que tu programa cada vez que arranque verifique "algo" del pc para decidir si puede funcionar o no ... o sea que quieres enlazar una licencia a una pieza de hardware concreta.

Si el usuario cambia esa pieza en su PC tu programa deja de funcionar.

Si es así de simple ... usa cualquiera de las direcciones mac, el sistema operativo generalmente te las devolverá siempre en el mismo orden (que suele depender del bus al que estén conectadas).

Por cierto, si buscas un poco en google encontrarás código java para acceder al "registro" de Window$ ... quizás ahí haya datos que te permitan "enganchar" tu aplicación a alguna clave más fiable ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 111
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

MAC Address cual esta activo?

Publicado por Gonzalo (112 intervenciones) el 22/04/2015 19:08:32
mas exactamente, necesito verificar la procedencia de una solicitud antes de procesarla.

si es una procedencia de la solicitud desconocida debo primero confirmar que el origen sea valido, si no se puede confirmar el origen entonces debo reportar la solictud con el administrador y sera el quien niegue o acepte la solicitud, se registra y listo, deja de ser un problema.

afortunadamente el 99% de los usuarios usan laptop, asi que no hay problema con el cambio de tarjeta de red, pero, algunos usan red pcmcia para poder conectarse a 2 anillos aparte del internet, asi que aparte de la tarjeta de red integrada tienen tambien el wifi o whireless y no faltara quien se conecte por el usb, esas en particular son el problema, por eso necesitaba encontrar cual es la tarjeta que viene con la laptop y eliminar las demas.

eso eliminaria el 90% del problema y me dedicaria a resolver ese 10%.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

MAC Address cual esta activo?

Publicado por Tom (1831 intervenciones) el 24/04/2015 09:06:16
Creo que todos ahorraríamos tiempo si mostraras una imagen más detallada de lo que quieres hacer.

Tienes un "servidor" que recibe solicitudes de "clientes".
Imagino que esas solicitudes las realiza una aplicaión específica y que contienen la dirección MAC de una tarjeta de red del pc cliente (supongo que es el cliente quien envia su mac, dado que un servidor java no puede acceder a las mac remotas).
Existe una manera de "registrar" un pc cliente como válido en el servidor.

Una posible solución sería que cuando registras un cliente, registres todas sus direcciones mac.

Otra sería que el cliente enviase siempre la dirección mac del interface de red por el que se esta conectando al servidor (depende del código del cliente, pero es sencillo averiguarlo); si el cliente utiliza un interface de red distinto (por ejemplo, desconecta su cable lan y se conecta por wifi) la autorización ya no sería válida.

Otra solución sería que usases alguna clave del registro de windows que fuera única en cada PC (por cierto, en determinadas condiciones la direccion mac de una tarjeta de red se puede modificar por el usuario).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar