public void sendAFile( Peer a_recipient, File a_file ) throws UnknownHostException, IOException
	{
		Socket l_cliSock = new Socket( a_recipient.addr, this.ctrl_fileTransfertPort);
		ctrl_uploader.ReSet( l_cliSock, a_file.getAbsolutePath() );
		ctrl_uploader.enableProgress( this.ctrl_mainwindow.getFileProgressBar());
		
		
		Logger.notify("Starting an upload request to " + a_recipient.infos.PI_username + " for file : " + a_file);
		try 
		{
			if ( ctrl_uploader.SendHeader() ) // a timeout can occur
			{
				Logger.notify("Remote host accepted file transfert.");
				// Now start transfert of file

				if ( ctrl_uploader.SendData() ) // a timeout can occur
				{
					// SUCCESS
					UserInteract.info(" Upload was successfully performed !");
					Logger.notify("File "+ a_file.getName() +" was successfully sent !");
				}
				else
				{
					// ERROR
					Logger.error("Upload of "+ a_file.getName() +" failed...");
					ctrl_uploader.getProgress().interruptProgress();
				}
			}
			else
			{
				// CAN'T CONTACT CLIENT
				Logger.error("Remote host refused file transfert.");
				UserInteract.error("Remote host has rejected the file transfert request...");
			}
		} 
		catch ( SocketTimeoutException e)
		{
			Logger.exception(e.toString());;
			// No answer from server
			ctrl_uploader.getProgress().interruptProgress();
		}
		catch (IOException e) {
			// TODO Auto-generated catch block
			Logger.exception(e.toString());;
			ctrl_uploader.getProgress().interruptProgress();
		}
		finally
		{
			l_cliSock.close();
		}	
	}