package se.nekotronic.udpreceiver; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.Enumeration; public class UDPServerThread extends Thread { private UDPReceiveActivity parent; private int port; private boolean quit = false; private DatagramSocket socket; public UDPServerThread(UDPReceiveActivity parent, int port) { this.parent = parent; this.port = port; } public void run() { try { parent.print("Nätverksstatus..."); showNetworkStatus(); socket = new DatagramSocket(port); byte[] buf = new byte[100]; while (!quit) { DatagramPacket packet = new DatagramPacket(buf, buf.length); parent.print("Waiting for packet..."); socket.receive(packet); String message = new String(packet.getData()); parent.print("Received packet: '" + message + "'"); } } catch (SocketException e) { parent.print("SocketException: " + e); } catch (IOException e) { parent.print("IOExceptione: " + e); } } // run public void please_stop() { quit = true; socket.close(); } private void showNetworkStatus() { try { for (Enumeration is = NetworkInterface.getNetworkInterfaces(); is.hasMoreElements();) { NetworkInterface i = is.nextElement(); // parent.print("Interface: " + i.getName() + ", " + (i.isUp() ? "up" : "down")); -- Requires API 9 parent.print("Interface: " + i.getName()); for (Enumeration ip = i.getInetAddresses(); ip.hasMoreElements();) { InetAddress a = ip.nextElement(); parent.print(" Address: " + a.toString()); } } } catch (SocketException e) { parent.print("Caught exception: " + e); } } // showNetworkStatus } // UDPServerThread