public void run() {

    boolean bContinue = true;

    while (bContinue) {
      try {
        byte[] buf = new byte[256];

        DatagramPacket packet = new DatagramPacket(buf, buf.length);

        /** wait here for incoming data */
        socket.receive(packet);

        /** received data */
        InetAddress address = packet.getAddress();
        int port = packet.getPort();
        byte[] data = packet.getData();

        /** deserialize the data into a String object (what we expect) */
        ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(data));
        String sData = (String) in.readObject();
        in.close();

        String sText = ui.getTextIncoming().getText();
        sText += address.getHostAddress() + ":" + port + "  " + sData + "\n";
        ui.getTextIncoming().setText(sText);

      } catch (IOException e) {
        e.printStackTrace();
      } catch (ClassNotFoundException e) {
        e.printStackTrace();
      }
    }
  }
 public DatagramServer(String name, DatagramUI d) throws IOException {
   super(name);
   ui = d;
   socket = new DatagramSocket(ui.getPort());
 }