public void run() {
		byte[] buffer = new byte[1024];
		
		DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
		
		while (true) {
			try {
				this.socket.receive(packet);
			} catch (IOException e) {
				e.printStackTrace();
			}
			
			byte[] cmd = packet.getData();
			
			InetAddress addr = packet.getAddress();
			
			if (Codes.equal(Codes.JOIN, cmd))
				addReceiver( addr );
			else if (Codes.equal(Codes.FORMAT, cmd))
				formatOK( addr );
			else if (Codes.equal(Codes.FASTER, cmd)) //TODO: should be allowed only once per few seconds for security
				this.packetFiller.faster();
			else if (Codes.equal(Codes.SLOWER, cmd)) //TODO: should be allowed only once per few seconds for security
				this.packetFiller.slower();
			
			try {
				Thread.sleep(1);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}