Exemplo n.º 1
0
 void DownloadThread()
 {
     try
     {
         mLog.Info("Download thread id:[{0}]", Thread.CurrentThread.ManagedThreadId.ToString());
         DownloadSubTask subTask = this.mTask.GetSubTask();
         while (subTask != null)
         {
             byte[] data = HttpDownloadRange.Download(subTask.RemotePath, subTask.from, subTask.to);
             if (data == null)
             {
                 mLog.Error("An error has occurred in the dowmload thread,error:noknown.");
                 break;
             }
             subTask.data = data;
             var b = this.mTask.UpdateTaskState(subTask, 2);
             if (b)
             {
                 mLog.Info("Thread Download finish.");
                 break;
             }
             subTask = this.mTask.GetSubTask();
         }
     }
     catch (Exception e)
     {
         mLog.Error("An error has occurred in the dowmload thread,error:{0}", e.ToString());
         this.Errored(e.Message);
     }
 }
Exemplo n.º 2
0
        void Download()
        {
            if (task_ != null)
            {
                Console.WriteLine("Download begin task id = " + task_.Id.ToString());
                byte[] data = HttpDownloadRange.Download(task_.RemotePath, task_.from, task_.to);
                Console.WriteLine("Download end");

                Console.WriteLine("trans begin");
                FileBlockBeginPacket begin = new FileBlockBeginPacket();
                autoResetEvent_.WaitOne();
                Program.slave.Send(begin.Encode());
                byte[] b3k = new byte[1024 * 3];
                int    c   = (data.Length + 3071) / 3072;
                for (int i = 0; i < c - 1; ++i)
                {
                    Array.Copy(data, 1024 * 3 * i, b3k, 0, 1024 * 3);
                    FileBlockDataPacket d = new FileBlockDataPacket(b3k);
                    autoResetEvent_.WaitOne();
                    Program.slave.Send(d.Encode());
                }
                int lastBlockSize = data.Length % 3072;
                if (lastBlockSize == 0)
                {
                    lastBlockSize = 3072;
                }
                {
                    byte[] bxk = new byte[lastBlockSize];
                    Array.Copy(data, 1024 * 3 * (c - 1), bxk, 0, lastBlockSize);
                    FileBlockDataPacket d = new FileBlockDataPacket(bxk);
                    autoResetEvent_.WaitOne();
                    Program.slave.Send(d.Encode());
                }
                FileBlockEndPacket end = new FileBlockEndPacket();
                autoResetEvent_.WaitOne();
                Program.slave.Send(end.Encode());
                Console.WriteLine("trans end");
            }
        }
Exemplo n.º 3
0
        void Download()
        {
            if (task_ != null)
            {
                LogManager.Instalce.DownloadTaskBeginLog(task_.RemotePath, task_.from, task_.to);
                byte[] data = HttpDownloadRange.Download(task_.RemotePath, task_.from, task_.to);
                LogManager.Instalce.DownloadTaskEndLog(task_.RemotePath, task_.from, task_.to);

                LogManager.Instalce.TransferBegin(task_.RemotePath, task_.from, task_.to);
                FileBlockBeginPacket begin = new FileBlockBeginPacket();
                autoResetEvent_.WaitOne();
                Peer.Send(begin.Encode());
                byte[] b3k = new byte[1024 * 3];
                int    c   = (data.Length + 3071) / 3072;
                for (int i = 0; i < c - 1; ++i)
                {
                    Array.Copy(data, 1024 * 3 * i, b3k, 0, 1024 * 3);
                    FileBlockDataPacket d = new FileBlockDataPacket(b3k);
                    autoResetEvent_.WaitOne();
                    Peer.Send(d.Encode());
                }
                int lastBlockSize = data.Length % 3072;
                if (lastBlockSize == 0)
                {
                    lastBlockSize = 3072;
                }
                {
                    byte[] bxk = new byte[lastBlockSize];
                    Array.Copy(data, 1024 * 3 * (c - 1), bxk, 0, lastBlockSize);
                    FileBlockDataPacket d = new FileBlockDataPacket(bxk);
                    autoResetEvent_.WaitOne();
                    Peer.Send(d.Encode());
                }
                FileBlockEndPacket end = new FileBlockEndPacket();
                autoResetEvent_.WaitOne();
                Peer.Send(end.Encode());
                LogManager.Instalce.TransferEnd(task_.RemotePath, task_.from, task_.to);
            }
        }
Exemplo n.º 4
0
        void Download()
        {
            DownloadSubTask subTask = task_.GetSubTask();

            while (subTask != null)
            {
                byte[] data = HttpDownloadRange.Download(subTask.RemotePath, subTask.from, subTask.to);
                if (data == null)
                {
                    Console.WriteLine("download error");
                    break;
                }
                subTask.data = data;
                var b = task_.UpdateTaskState(subTask, 2);
                if (b)
                {
                    Console.WriteLine("download finish");
                    break;
                }
                subTask = task_.GetSubTask();
            }
        }
Exemplo n.º 5
0
Arquivo: Program.cs Projeto: sgww/cozy
        static void Main(string[] args)
        {
            string        url       = @"http://speed.myzone.cn/WindowsXP_SP2.exe";
            HttpFileSplit split     = new HttpFileSplit();
            long          blockSize = 1024 * 3;

            if (split.TryToSplit(url, blockSize))
            {
                Console.WriteLine("url:" + url);
                Console.WriteLine("fileSize_:" + split.fileSize_);
                Console.WriteLine("blockCount_:" + split.blockCount_);
                Console.WriteLine("lastBlockSize_:" + split.lastBlockSize_);

                Console.ReadKey();
                byte[] data = HttpDownloadRange.Download(url, 3 * split.blockSize_, 4 * split.blockSize_ - 1);
                if (data != null && data.Length == split.blockSize_)
                {
                    Console.WriteLine("HttpDownloadRange ok");
                }
            }
            Console.ReadKey();
        }