예제 #1
0
 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;
     }
 }