static void RecieveFile(String path, Socket socket /*, UInt64 fileSize*/, IProgress <FileTransferProgressArgs> fileTransferProgress)
        {
            UInt16     packetSize         = 1024;
            FileStream downloadFileStream = null;

            try
            {
                downloadFileStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None);
                var    buffer       = new byte[packetSize];
                var    progressArgs = new FileTransferProgressArgs();
                UInt16 bytesRead    = 0;
                progressArgs.packetsTransferred = 0;

                /*progressArgs.FileSize = fileSize;
                 * progressArgs.numberOfPackets = (fileSize + packetSize - 1) / packetSize;*/
                while ((bytesRead = (UInt16)socket.Receive(buffer)) > 0)
                {
                    progressArgs.packetsTransferred += (UInt64)(bytesRead / packetSize);
                    downloadFileStream.Write(buffer, 0, bytesRead);
                    fileTransferProgress.Report(progressArgs);
                }
                downloadFileStream.Close();
            }
            catch (FileNotFoundException) { }
            catch (Exception)
            {
                if (downloadFileStream != null)
                {
                    downloadFileStream.Close();
                }
            }
        }
        static void SendFile(string path, Socket socket, IProgress <FileTransferProgressArgs> fileTransferProgress)
        {
            int        packetSize       = 1024;
            FileStream uploadFileStream = null;

            try
            {
                uploadFileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read, (int)packetSize);
                UInt64 fileSize = 0;
                var    buffer   = new byte[packetSize];
                fileSize = (UInt64)uploadFileStream.Length;
                UInt64 numberOfPackets = (UInt64)((fileSize + (ulong)packetSize - 1) / ((ulong)packetSize));
                var    progressArgs    = new FileTransferProgressArgs();
                progressArgs.FileSize           = fileSize;
                progressArgs.numberOfPackets    = numberOfPackets;
                progressArgs.packetsTransferred = 0;
                for (UInt64 tempor = 0; tempor < (numberOfPackets - 1); tempor++)
                {
                    uploadFileStream.Read(buffer, 0, packetSize);
                    socket.Send(buffer);
                    progressArgs.packetsTransferred += 1;
                    fileTransferProgress.Report(progressArgs);
                }
                packetSize = (int)(fileSize - ((numberOfPackets - 1) * 1024));
                buffer     = new byte[(int)packetSize];
                uploadFileStream.Read(buffer, 0, packetSize);
                socket.Send(buffer);
                progressArgs.packetsTransferred += 1;
                fileTransferProgress.Report(progressArgs);
                uploadFileStream.Close();
            }
            catch (FileNotFoundException) { }
            catch (Exception)
            {
                if (uploadFileStream != null)
                {
                    uploadFileStream.Close();
                }
            }
        }
 public void resetProgress()
 {
     progress = null;
 }
 //File Transfer Process Progress
 public void updateProgress(FileTransferProgressArgs args)
 {
     progress = args;
 }