@Override
    public final void run() {
        byte[] buf = new byte[SIZE];

        final DatagramPacket datagramPaquet = new DatagramPacket(buf,
                buf.length);

        while (true) {
            try {
                socket.receive(datagramPaquet);

                buf = datagramPaquet.getData();

                final ByteArrayInputStream bais = new ByteArrayInputStream(buf);

                final ObjectInputStream ois = new ObjectInputStream(bais);

                try {
                    final AbstractMessage message =
                            (AbstractMessage) ois.readObject();
                    /*
                        If we receive a message that comes from us,
                        for example, because of Broadcast,
                        we don't treat it.
                    */
                    System.out.println("m = " + message);
                    if (!message.getIpSource().
                            equals(Controller.getNetworkAddress())) {
                        message.treatment();
                    }
                } catch (ClassNotFoundException e) {
                    WindowComponent.getInstance().getApiHmi().
                            errorNotification("Network", e.getMessage());
                }
            } catch (IOException e) {
                 WindowComponent.getInstance().getApiHmi()
                             .errorNotification("Network", e.getMessage());
            }
        }
    }