Broadcast Adresse herausfinden

  • Antworten:2
Thomas
  • Forum-Beiträge: 4

03.10.2013, 11:18:24 via Website

Hi,
ich schreibe eine App in der ich mit UDP im lokalen Netzwerk Broadcasten will.
Ich hab mehrere Beispiele und listings im Netz gefunden und ausprobiert die mir die Broadcast Adresse zurückgeben sollen, aber ich bekomm immer "FATAL EXCEPTION: main".
Wo liegt der Fehler?

Gruß Tom

1try {
2 for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
3 NetworkInterface intf = en.nextElement();
4 if(Build.VERSION.SDK_INT < 9) {
5 if(!intf.getInetAddresses().nextElement().isLoopbackAddress()){
6 byte[] quads = intf.getInetAddresses().nextElement().getAddress();
7 quads[0] = (byte)255;
8 quads[1] = (byte)255;
9 System.out.println(InetAddress.getByAddress(quads));
10 }
11 }else{
12 if(!intf.isLoopback()){
13 List<InterfaceAddress> intfaddrs = intf.getInterfaceAddresses();
14 System.out.println(intfaddrs.get(0).getBroadcast()); // hier gibts ein IndexOutOfBoundsException
15 }
16 }
17 }
18 } catch (SocketException e) {
19 e.printStackTrace();
20 } catch (UnknownHostException e) {
21 e.printStackTrace();
22 }

110-03 11:04:15.533: E/AndroidRuntime(29116): FATAL EXCEPTION: main
210-03 11:04:15.533: E/AndroidRuntime(29116): java.lang.RuntimeException: Unable to start activity ComponentInfo{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
310-03 11:04:15.533: E/AndroidRuntime(29116): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)
410-03 11:04:15.533: E/AndroidRuntime(29116): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
510-03 11:04:15.533: E/AndroidRuntime(29116): at android.app.ActivityThread.access$700(ActivityThread.java:140)
610-03 11:04:15.533: E/AndroidRuntime(29116): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237)
710-03 11:04:15.533: E/AndroidRuntime(29116): at android.os.Handler.dispatchMessage(Handler.java:99)
810-03 11:04:15.533: E/AndroidRuntime(29116): at android.os.Looper.loop(Looper.java:137)
910-03 11:04:15.533: E/AndroidRuntime(29116): at android.app.ActivityThread.main(ActivityThread.java:4921)
1010-03 11:04:15.533: E/AndroidRuntime(29116): at java.lang.reflect.Method.invokeNative(Native Method)
1110-03 11:04:15.533: E/AndroidRuntime(29116): at java.lang.reflect.Method.invoke(Method.java:511)
1210-03 11:04:15.533: E/AndroidRuntime(29116): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
1310-03 11:04:15.533: E/AndroidRuntime(29116): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
1410-03 11:04:15.533: E/AndroidRuntime(29116): at dalvik.system.NativeStart.main(Native Method)
1510-03 11:04:15.533: E/AndroidRuntime(29116): Caused by: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
1610-03 11:04:15.533: E/AndroidRuntime(29116): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
1710-03 11:04:15.533: E/AndroidRuntime(29116): at java.util.ArrayList.get(ArrayList.java:304)
1810-03 11:04:15.533: E/AndroidRuntime(29116): at java.util.Collections$UnmodifiableList.get(Collections.java:1050)
1910-03 11:04:15.533: E/AndroidRuntime(29116): at xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.MainMenuActivity.onCreate(MainMenuActivity.java:56)
2010-03 11:04:15.533: E/AndroidRuntime(29116): at android.app.Activity.performCreate(Activity.java:5206)
2110-03 11:04:15.533: E/AndroidRuntime(29116): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
2210-03 11:04:15.533: E/AndroidRuntime(29116): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074)
2310-03 11:04:15.533: E/AndroidRuntime(29116): ... 11 more

Antworten
impjor
  • Forum-Beiträge: 1.793

03.10.2013, 13:43:45 via App

Thomas

1java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0

Sollte doch eigentlich klar sein, oder?
Interessant wäre wohl eher, wie die gefüllt wird.

LG

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Thomas
  • Forum-Beiträge: 4

03.10.2013, 21:16:30 via Website

Stimmt, aber warum ist die leer? Das passiert oben in dem Codeausschnitt in Zeile 14.
Ich habs jetzt anders gemacht. Kann man doch so machen, oder kanns da irgendwelche Probleme geben?

1try {
2 for (Enumeration en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
3 NetworkInterface intf = (NetworkInterface) en.nextElement();
4 for (Enumeration enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
5 InetAddress inetAddress = (InetAddress) enumIpAddr.nextElement();
6 if (!inetAddress.isLoopbackAddress()&&inetAddress instanceof Inet4Address) {
7 String ipAddress=inetAddress.getHostAddress().toString();
8 System.out.println("IP address " + ipAddress);
9 String ips[] = ipAddress.split("\\.");
10 String broadcastadresse = ips[0] + "." + ips[1] + "." + ips[2] + ".255";
11 System.out.println("Broadcast: " + broadcastadresse);
12 return broadcastadresse;
13 }
14 }
15 }
16 } catch (SocketException ex) {
17 System.out.println("Socket exception in GetIP Address of Utilities" + ex.toString());
18 return "";
19 }

Antworten