@Override
	public void run() {
		initializeLogger();
		this.log.fine("Start FileReceiver");
		this.log.fine("Get current thread");
		Thread currentThread = Thread.currentThread();
		if (currentThread.isInterrupted()) return;
		ServerSocket fileServerSocket = null;
		try {
			fileServerSocket = new ServerSocket(this.port);
			this.log.info("Create Server Socket: " + fileServerSocket.toString());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		Socket clientFileSocket = null;
		try {
			clientFileSocket = fileServerSocket.accept();
			this.log.info("Accept client socket: " + clientFileSocket.toString());
			fileServerSocket.close();
			this.log.info("Close server scoket: " + fileServerSocket.toString());
		} catch (IOException e) {
			e.printStackTrace();
			this.log.info("Catch IOException");
		}
		try {
			File file = new File(fileName);
			this.log.fine("Create new file: " + fileName);
			FileOutputStream fileWriter = new FileOutputStream(file);
			this.log.fine("Create new FileOutputStream: " + fileWriter.toString());
			InputStream streamReader = clientFileSocket.getInputStream();
			this.log.fine("get Input Stream from client File Socket");
			byte buffer[] = new byte[packageSize];
			this.log.fine("create byte array: " + packageSize);
			while (!clientFileSocket.isInputShutdown())
				if (currentThread.isInterrupted())
				{
					this.log.fine("FileReceiver is interrupted");
					clientFileSocket.close();
					fileWriter.close();
					this.log.fine("FileReceiver is finish");
					return;
				}
				while (streamReader.available() > 0) {
					if (currentThread.isInterrupted())
					{
						this.log.fine("FileReceiver is interrupted");
						clientFileSocket.close();
						fileWriter.close();
						this.log.fine("FileReceiver is finish");
						return;
					}
					streamReader.read(buffer);
					this.log.fine("Read from streamReader");
					fileWriter.write(buffer);
					this.log.fine("write with fileWriter");
				}
			fileWriter.close();
			this.log.fine("fileWriter.close");
			clientFileSocket.close();
			this.log.fine("clientFileSocket.close");
			fileServerSocket.close();
			this.log.fine("fileServerSocket.close");
		} catch (IOException e) {
			e.printStackTrace();
		}
		this.log.fine("FileReceiver finish");
	}