Para mi proyecto quería obtener una lista de todas las direcciones de broadcast disponibles para poder transmitir una solicitud y mi otra aplicación ubicada en otra computadora en la red no especificada respondería y obtendría la lista I (ahora usando la versión poco modificado con aporte de Mike) ocurrió esto:Detectando todas las direcciones de broadcast de la red disponible en Java
private ArrayList<InetAddress> getBroadcastAddresses() {
ArrayList<InetAddress> listOfBroadcasts = new ArrayList();
Enumeration list;
try {
list = NetworkInterface.getNetworkInterfaces();
while(list.hasMoreElements()) {
NetworkInterface iface = (NetworkInterface) list.nextElement();
if(iface == null) continue;
if(!iface.isLoopback() && iface.isUp()) {
System.out.println("Found non-loopback, up interface:" + iface);
Iterator it = iface.getInterfaceAddresses().iterator();
while (it.hasNext()) {
InterfaceAddress address = (InterfaceAddress) it.next();
System.out.println("Found address: " + address);
if(address == null) continue;
InetAddress broadcast = address.getBroadcast();
if(broadcast != null) listOfBroadcasts.add(broadcast);
}
}
}
} catch (SocketException ex) {
return new ArrayList<InetAddress>();
}
return site;
}
funciona bastante bien para LAN reqular sin embargo cuando se trata de la LAN inalámbrica sólo se salta el segundo bucle while después de una etapa, porque de tener address
es nulo, aunque cuando utilicé System.out.println(interfaceItem)
solo para ver qué interfaces se están procesando, escribí el nombre de la LAN inalámbrica y mi IP correspondiente a la red
EDIT 1: This es la salida donde 172.16.1.104 es mi IP en la red inalámbrica. El problema aparece SOLAMENTE en mi notebook con Wifi. La salida proviene de mi computadora portátil, donde utilizo la mayoría de las conexiones inalámbricas y, a veces, uso UTP para conectarme con mi amigo. También hay una interfaz de red de VirtualBox en mi computadora portátil.
¿Podría decirme qué tiene de malo? ¡Gracias!
Nota: Así que resulta que esto podría ser un problema para mi portátil en particular y el código funciona para todos los demás en general, me encanta este tipo de problema :-) Parece un callejón sin salida pero gracias ayuda de todos modos :-)
¡Todavía te amo! ;-)
Quizás, está bien tener solo una iteración de bucle interno, porque su NIC tiene solo una dirección de host IP. –
Admito que no es necesario pasar por InterfaceAdresses ya que allí, como dices, debería ser solo uno o ninguno, pero eso funcionaría incluso ahora, ¿no? – Martin
Sé que este ejemplo no se puede probar fácilmente para algunos de ustedes simplemente porque no tiene una red WiFi para probarlo pero, no obstante, no tiene sentido para mí por qué no funciona para redes inalámbricas. – Martin