public void runFileCopyClient() {

        long startTime = System.currentTimeMillis();

        //init Socket
        try {
            socket = new DatagramSocket();
        } catch (SocketException e) {
            System.out.println("Have Problem with init Socket");
            e.printStackTrace();
        }

        //start AckCheckerThread
        packetAckChecker = new PacketAckChecker(this, socket);
        packetAckChecker.setDaemon(true);
        packetAckChecker.start();

        //init PacketBuffer
        buffer = new PacketBuffer(this, windowSize);


        //init file reader
        FileInputStream fileReader = null;
        try {
            fileReader = new FileInputStream(sourcePath);
        } catch (FileNotFoundException e) {
            System.out.println("Have Problem with SourcePath");
            e.printStackTrace();
        }

        FCpacket packetToSend;

        //send ControlPacket SeqNumber 0
        packetToSend = makeControlPacket();
        paketRTTSaver.add(System.currentTimeMillis());

        buffer.ad(packetToSend);
        sendPacket(packetToSend);

        while ((packetToSend = getNextPacket(fileReader)) != null) {

            while (!buffer.acceptsNummber(packetToSend.getSeqNum())) {
                //do nothing
            }

            startTimer(packetToSend);
            paketRTTSaver.add(System.currentTimeMillis());
            buffer.ad(packetToSend);
            sendPacket(packetToSend);
            packeteCount++;
        }

        //The End
        long endTime = System.currentTimeMillis();
        System.out.println("Total Transfer Time: " + (endTime - startTime) + " ms");
        System.out.println("Packet's: " + packeteCount + " / Ack's: " + paketRTTSaver.size() + " / Ressend: " + timeroutCount);

        System.out.println("Packet Transfer Time: " + (endTime - startTime) / paketRTTSaver.size());
    }