public void run() {
	
	while (true) {
	    byte[] receiveData = new byte[50];
	    
	    DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
	    
	    try {
		socketReception.receive(receivePacket);
		byte[] packetData_2 = receivePacket.getData();
		for (int l = 0; l < Utils.IntegerSize; l++) {
		    this.packetData = (this.packetData << 8) + (packetData_2[l] & 0xff);
		}
		this.needMore = false;
	    } catch (Exception exc) {
		System.out.println(exc);
	    }
	    System.out.println("On a recu :                " + this.packetData);
	    this.nbAck++;
	    
	    try {
		Thread.sleep(Utils.RTT);
	    } catch (InterruptedException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	    }
	    
	    if ( this.packetData == Utils.FLAG_PUSH ) {
		setNumberOfPackets(this.packetData);
		break;
	    }
	    
	    if ( this.packetData == Utils.NACK ) {
		this.needMore = true;
		setNumberOfPackets(1);
		continue;
	    }
	    
	    if ( this.packetData == Utils.ACK ) {
		
		if ( time_1 == 0 ) {
		    time_1 = System.currentTimeMillis() - before;
		}
		endReception++;
		if ( endReception > this.nbOfReceiver ) {
		    this.numberOfPackets = 0;
		    this.changeStatusEndLoop();
		    time_2 = System.currentTimeMillis() - before;
		    Utils.printInFile(String.valueOf(System.currentTimeMillis()), port, 1);
		    break;
		}
	    } else {
		setNumberOfPackets(this.packetData);
	    }
	}
    }