static bool SendFile(ICommunicator service, string file) { long blockSize = 1024;//can be bigger try { FileStream fs = File.Open(file, FileMode.Open, FileAccess.Read);//open local string filename = Path.GetFileName(file); service.OpenFileForWrite(filename);//open remote int bytesRead = 0; while (true) { long remainder = (int)(fs.Length - fs.Position); if (remainder == 0) break; long size = Math.Min(blockSize, remainder); byte[] block = new byte[size]; bytesRead = fs.Read(block, 0, block.Length); service.WriteFileBlock(block);//write remote } fs.Close(); service.CloseFile();//close remote return true; } catch (Exception ex) { Console.Write("\n can't open {0} for writing - {1}", file, ex.Message); return false; } }