Пример #1
0
        public void Restart_load()
        {
            HttpWebRequest request;

            request      = (HttpWebRequest)HttpWebRequest.Create(strurl);
            DownLoadsize = request.GetResponse().ContentLength;//取得目标文件的长度
            request.Abort();
            StreamReader sw = new StreamReader(path + true_filename + "set." + "txt");

            strurl = sw.ReadLine();
            thread = Convert.ToInt32(sw.ReadLine());
            path   = sw.ReadLine();
            //根据线程数初始化数组
            threadw    = new bool[thread];
            filenamew  = new string[thread];
            filestartw = new long[thread];
            filesizew  = new long[thread];
            for (int i = 0; i < thread; i++)
            {
                filenamew[i]  = sw.ReadLine();                  //每个线程接收文件的文件名
                filestartw[i] = Convert.ToInt32(sw.ReadLine()); //每个线程接收文件的起始位置
                filesizew[i]  = Convert.ToInt32(sw.ReadLine()); //每个线程接收文件的大小
                threadw[i]    = Convert.ToBoolean(sw.ReadLine());
                Console.WriteLine(filenamew[i] + filesizew[i].ToString());
            }
            dt = Convert.ToDateTime(sw.ReadLine());
            sw.Close();
            Console.ReadLine();
            threadk  = new Thread[thread];
            httpfile = new HttpFile[thread];
            for (int j = 0; j < thread; j++)
            {
                httpfile[j] = new HttpFile(this, j);
                threadk[j]  = new Thread(new ThreadStart(httpfile[j].receive));
                threadk[j].Start();
            }
            downloadcontrol downcontrol = new downloadcontrol(this);

            testspeed = new Thread(downcontrol.set);
            testspeed.Start();
            //启动合并各线程接收的文件线程
            hbth = new Thread(new ThreadStart(hbfile));
            hbth.Start();
        }
Пример #2
0
 public void Start_load(int number, string url, string path1)
 {
     downornot = true;
     strurl    = url;
     GetPath(path1);
     GetURLType(url);
     GetFileName(url);
     setfilename = path + true_filename + "set." + "txt";
     if (File.Exists(setfilename))
     {
         Console.WriteLine("exist");
         Restart_load();
     }
     else
     {
         Console.WriteLine("not exist");
         dt = DateTime.Now;//开始接收时间
         HttpWebRequest  request;
         long            filesize    = 0;
         downloadcontrol downcontrol = new downloadcontrol(this);   //set speed etc.
         testspeed = new Thread(downcontrol.set);
         testspeed.Start();
         try
         {
             request      = (HttpWebRequest)HttpWebRequest.Create(strurl);
             filesize     = request.GetResponse().ContentLength;//取得目标文件的长度
             DownLoadsize = filesize;
             request.Abort();
         }
         catch (Exception er)
         {
             //MessageBox.Show (er.Message );
         }
         // 接收线程数
         thread = number;
         //根据线程数初始化数组
         threadw    = new bool[thread];
         filenamew  = new string[thread];
         filestartw = new long[thread];
         filesizew  = new long[thread];
         //计算每个线程应该接收文件的大小
         long filethread  = filesize / thread;                    //平均分配
         long filethreade = filesize - filethread * (thread - 1); //剩余部分由最后一个线程完成
         //为数组赋值
         for (int i = 0; i < thread; i++)
         {
             threadw[i]   = false;                                        //每个线程状态的初始值为假
             filenamew[i] = path + true_filename + i.ToString() + ".dat"; //每个线程接收文件的临时文件名
             if (i < thread - 1)
             {
                 filestartw[i] = filethread * i; //每个线程接收文件的起始点
                 filesizew[i]  = filethread - 1; //每个线程接收文件的长度
             }
             else
             {
                 filestartw[i] = filethread * i;
                 filesizew[i]  = filethreade - 1;
             }
         }
         //保存到文件
         FileStream setfs;
         setfs = new FileStream(path + true_filename + "set." + "txt", System.IO.FileMode.Create);
         StreamWriter sw = new StreamWriter(setfs);
         sw.WriteLine(strurl);
         sw.WriteLine(thread);
         sw.WriteLine(path);
         for (int i = 0; i < thread; i++)
         {
             sw.WriteLine(filenamew[i]);  //每个线程接收文件的文件名
             sw.WriteLine(filestartw[i]); //每个线程接收文件的起始位置
             sw.WriteLine(filesizew[i]);  //每个线程接收文件的大小
             sw.WriteLine(threadw[i]);
         }
         sw.WriteLine(dt);
         //清空缓冲区
         sw.Flush();
         //关闭流
         sw.Close();
         setfs.Close();
         //定义线程数组,启动接收线程
         threadk  = new Thread[thread];
         httpfile = new HttpFile[thread];
         for (int j = 0; j < thread; j++)
         {
             httpfile[j] = new HttpFile(this, j);
             threadk[j]  = new Thread(new ThreadStart(httpfile[j].receive));
             threadk[j].Start();
         }
         //启动合并各线程接收的文件线程
         hbth = new Thread(new ThreadStart(hbfile));
         hbth.Start();
     }
 }
Пример #3
0
        public void Start_load(int number,string url,string path1)
        {
            downornot = true;
            strurl = url;
            GetPath(path1);
            GetURLType(url);
            GetFileName(url);
            setfilename = path+true_filename + "set." + "txt";
            if (File.Exists(setfilename))
            {
                Console.WriteLine("exist");
                Restart_load();
            }
            else
            {
                Console.WriteLine("not exist");
                dt = DateTime.Now;//开始接收时间
                HttpWebRequest request;
                long filesize = 0;
                downloadcontrol downcontrol = new downloadcontrol(this);   //set speed etc.
                testspeed = new Thread(downcontrol.set);
                testspeed.Start();
                try
                {
                    request = (HttpWebRequest)HttpWebRequest.Create(strurl);
                    filesize = request.GetResponse().ContentLength;//取得目标文件的长度
                    DownLoadsize = filesize;
                    request.Abort();
                }
                catch (Exception er)
                {
                    //MessageBox.Show (er.Message );
                }
                // 接收线程数
                thread = number;
                //根据线程数初始化数组
                threadw = new bool[thread];
                filenamew = new string[thread];
                filestartw = new long[thread];
                filesizew = new long[thread];
                //计算每个线程应该接收文件的大小
                long filethread = filesize / thread;//平均分配
                long filethreade = filesize - filethread * (thread - 1);//剩余部分由最后一个线程完成
                //为数组赋值
                for (int i = 0; i < thread; i++)
                {
                    threadw[i] = false;//每个线程状态的初始值为假
                    filenamew[i] = path+true_filename + i.ToString() + ".dat";//每个线程接收文件的临时文件名
                    if (i < thread - 1)
                    {
                        filestartw[i] = filethread * i;//每个线程接收文件的起始点
                        filesizew[i] = filethread - 1;//每个线程接收文件的长度
                    }
                    else
                    {
                        filestartw[i] = filethread * i;
                        filesizew[i] = filethreade - 1;
                    }

                }
                //保存到文件
                FileStream setfs;
                setfs = new FileStream(path+true_filename + "set." + "txt", System.IO.FileMode.Create);
                StreamWriter sw = new StreamWriter(setfs);
                sw.WriteLine(strurl);
                sw.WriteLine(thread);
                sw.WriteLine(path);
                for (int i = 0; i < thread; i++)
                {
                    sw.WriteLine(filenamew[i]);//每个线程接收文件的文件名
                    sw.WriteLine(filestartw[i]);//每个线程接收文件的起始位置
                    sw.WriteLine(filesizew[i]);//每个线程接收文件的大小
                    sw.WriteLine(threadw[i]);
                }
                sw.WriteLine(dt);
                //清空缓冲区
                sw.Flush();
                //关闭流
                sw.Close();
                setfs.Close();
                //定义线程数组,启动接收线程
                threadk = new Thread[thread];
                httpfile = new HttpFile[thread];
                for (int j = 0; j < thread; j++)
                {
                    httpfile[j] = new HttpFile(this, j);
                    threadk[j] = new Thread(new ThreadStart(httpfile[j].receive));
                    threadk[j].Start();
                }
                //启动合并各线程接收的文件线程
                hbth = new Thread(new ThreadStart(hbfile));
                hbth.Start();
            }
        }
Пример #4
0
 public void Restart_load()
 {
     HttpWebRequest request;
     request = (HttpWebRequest)HttpWebRequest.Create(strurl);
     DownLoadsize= request.GetResponse().ContentLength;//取得目标文件的长度
     request.Abort();
     StreamReader sw = new StreamReader(path+true_filename + "set." + "txt");
     strurl=sw.ReadLine();
     thread=Convert.ToInt32(sw.ReadLine());
     path = sw.ReadLine();
     //根据线程数初始化数组
     threadw = new bool[thread];
     filenamew = new string[thread];
     filestartw = new long[thread];
     filesizew = new long[thread];
     for (int i = 0; i < thread; i++)
     {
         filenamew[i]=sw.ReadLine();//每个线程接收文件的文件名
         filestartw[i]=Convert.ToInt32(sw.ReadLine());//每个线程接收文件的起始位置
         filesizew[i] = Convert.ToInt32(sw.ReadLine());//每个线程接收文件的大小
         threadw[i] = Convert.ToBoolean(sw.ReadLine());
         Console.WriteLine(filenamew[i]+filesizew[i].ToString());
     }
     dt = Convert.ToDateTime(sw.ReadLine());
     sw.Close();
     Console.ReadLine();
     threadk = new Thread[thread];
     httpfile = new HttpFile[thread];
     for (int j = 0; j < thread; j++)
     {
            httpfile[j] = new HttpFile(this, j);
            threadk[j] = new Thread(new ThreadStart(httpfile[j].receive));
            threadk[j].Start();
     }
     downloadcontrol downcontrol = new downloadcontrol(this);
     testspeed = new Thread(downcontrol.set);
     testspeed.Start();
     //启动合并各线程接收的文件线程
     hbth = new Thread(new ThreadStart(hbfile));
     hbth.Start();
 }