Example #1
0
        public void SendFile(string path)
        {
            long   fileSize = FileHandler.GetFileSize(path);
            string fileName = FileHandler.GetFileName(path);
            var    header   = new Header().Create(fileName, fileSize);

            networkStreamHandler.Write(header);

            networkStreamHandler.Write(Encoding.UTF8.GetBytes(fileName));

            long parts = SpecificationHelper.GetParts(fileSize);

            Console.WriteLine("Will Send {0} parts", parts);
            long offset      = 0;
            long currentPart = 1;

            while (fileSize > offset)
            {
                byte[] data;
                if (currentPart == parts)
                {
                    var lastPartSize = (int)(fileSize - offset);
                    data    = fileStreamHandler.Read(path, offset, lastPartSize);
                    offset += lastPartSize;
                }
                else
                {
                    data    = fileStreamHandler.Read(path, offset, Specification.MaxPacketSize);
                    offset += Specification.MaxPacketSize;
                }

                networkStreamHandler.Write(data);
                currentPart++;
            }
        }