@Override
    public void run() {
        try {
            DatagramSocket serverSocket = new DatagramSocket(super.port);
            NetworkTrafficLogger.getInstance().writeLogToTextArea("Start listening to UDP on Port: " + super.port);
            while (true) {
                try {
                    byte[] receiveData = new byte[DataPacket.DEFAULT_DATA_SIZE];
                    DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
                    serverSocket.receive(receivePacket);
                    DataPacket packet = new DataPacket(receivePacket.getAddress().getHostName(), receivePacket.getPort(), receivePacket.getData());
                    super.message_queue.put(packet);
                    NetworkTrafficLogger.getInstance().writeReceiveLogToTextArea(packet);
                } catch (IOException ex) {
                    Logger.getLogger(UDPNetworkServerImpl.class.getName()).log(Level.SEVERE, null, ex);
                } catch (InterruptedException ex) {
                    Logger.getLogger(UDPNetworkServerImpl.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        } catch (SocketException ex) {
            Logger.getLogger(UDPNetworkServerImpl.class.getName()).log(Level.SEVERE, null, ex);
        }
    }