# getNetworkInterfaces() und WLAN



## TheGrasshopper (21. Aug 2010)

Guten Tag

Ich bin zur Zeit eine Netwerkanwendung zu schreiben die mit allen Rechnern auf denen sie läuft kommuniziert. Dazu möchte ich einen UDP Broadcast senden durch den die Anwendung weiss zu welchen Rechnern es eine Verbindung aufbauen kann.

Ich lese die BroadcastAdresssen folgendermaßen aus:


```
Enumeration<NetworkInterface> netInter = NetworkInterface.getNetworkInterfaces();
while(netInter.hasMoreElements()) {
   NetworkInterface ni = netInter.nextElement();
   for(int x=0;x<ni.getInterfaceAddresses().size();x++) {
      InterfaceAddress ia = ni.getInterfaceAddresses().get(x);
      if(ia.getBroadcast() != null) {
         System.out.println(ia.getBroadcast().getHostAddress());                           
      }
   }
}
```

Das ganze funktioniert soweit super. Zumindest bis zu dem Augenblick an dem ich mich mit einem WLAN-Netwerk verbinde. Dann wird in Zeile 5 eine NullPointerException geschmissen. Also ni.getInterfaceAddresses().get(x) liefert einmal null zurück.

Hat jemand eine Idee woran das liegen könnte? Da alle Rechner auf denen die Anwendung laufen soll in einem WLAN Netzwerk sind ist es nötig die Broadcastadresse des WLan Netzwerks zu ermitteln.


----------



## dku (21. Aug 2010)

ich denke mal, dass das die Interfaces sind welche aktuell keine IP Adresse bzw kein Broadcast haben.
Bei mir gibt's sogar 4x ein "null".

Ich könnte mir vorstellen, dass das verschwindet, wenn man den Interfaces eine feste IP gibt. 
Würde es aber auch als unkritisch betrachten, du fängst es ja ab


----------



## TheGrasshopper (21. Aug 2010)

Naja das eine Broadcast Adresse die null ist fange ich ab. Nicht aber wenn das ganze Interface null ist. Und es ist in sofern Kritisch das ich nur die 127.255.255.255 bekomme und nicht die 192.168.178.255 über die letztendlich der Broadcast gesendet werden soll. Wenn ich ein Netzwerkkabel anschließe wird das Interface aber korrekt aufgelistet. Das Problem ist nur der Wlan-Adapter


----------



## TheGrasshopper (21. Aug 2010)

Ich habe es mal mit einer statischen IP versucht. Außerdem habe ich Testweise den Virtuellen Netzerkadapter von VirtualBox aktiviert und eine Maschine gestartet. Dieser bekommt auch per DHCP seine Adresse. Ergebnis ist nun das ich 2 Broadcastadresse  bekomme. Immernoch die des Localhost-Adapters und den Vritual-Host Adapter. 
Bekomme auch immernoch 1x die NullPointerException.
Wenn ich den WLan Adapter deaktiviere läuft das ganze ohne die Exception durch. 
Währe für Ideen warum für den WLan Adapter ein Null zurückgeliefert wird wirklich dankbar.
Oder aber eine andere Möglichkeit an eine Broadcastadresse zu kommen die Java dazu veranlasst den Broadcast in mein Heimnetz zu senden.


----------



## tuxedo (23. Aug 2010)

Wenn es dir nur darum geht Rechner zu finden auf denen deine Anwendung läuft, dann kannst du dir auch eine eigene Multicast-Group aussuchen und die Nutzen. Es werden dann nur die Rechner antworten, auf denen das Programm läuft. Und du sparst dir das auslesen der Broadcast-Adresse. Und alle anderen Computer ignorieren die Nachricht...



- Alex


----------



## HoaX (23. Aug 2010)

Nimm halt den Broadcast 255.255.255.255, der gilt für alle Interfaces.


----------



## TheGrasshopper (25. Aug 2010)

Mit der 255.255.255.255 habe ich es bereits versucht. Musste aber feststellen das das Paket trotzdem nicht über den W-Lan Adapter gesendet wird. Was mich ehrlich gesagt nicht gewundert hat da er das Interface nicht richtig findet.


----------



## tuxedo (26. Aug 2010)

Ich werf' nochmal das Wort "Multicast" in den Raum. Vielleicht greift's diesmal jemand auf ...


----------

