.net 低优先级http文件传输?
有没有一种简单的方法来创建文件的低优先级传输?我的服务器上有很多文件,有时我也在传输其他东西。当我的网络繁忙时,有没有一种简单的方法可以让我的应用程序缓慢传输 < P>使用<代码> WebCopy.OpenRead ,并在读取响应的过程中添加一些睡眠。大致如下:.net 低优先级http文件传输?,.net,http,.net,Http,有没有一种简单的方法来创建文件的低优先级传输?我的服务器上有很多文件,有时我也在传输其他东西。当我的网络繁忙时,有没有一种简单的方法可以让我的应用程序缓慢传输 < P>使用 WebCopy.OpenRead ,并在读取响应的过程中添加一些睡眠。大致如下: using(var client = new WebClient()) using(var input = client.OpenRead("http://whatever.com/myfile.txt")) using(var output
using(var client = new WebClient())
using(var input = client.OpenRead("http://whatever.com/myfile.txt"))
using(var output = File.OpenWrite("c:/temp/myfile.txt"))
{
var length = long.Parse(client.ResponseHeaders["content-length"]);
var buffer = new byte[32768];
long totalRead = 0;
while(totalRead < length)
{
int read = input.Read(buffer, 0, buffer.Length);
if (read != 0)
{
output.Write(buffer, 0, read);
totalRead += read;
}
Thread.Sleep(100); // This is what slows down the download, make number bigger to download slower
}
}
使用(var client=new WebClient())
使用(var input=client.OpenRead(“http://whatever.com/myfile.txt"))
使用(var output=File.OpenWrite(“c:/temp/myfile.txt”))
{
var length=long.Parse(client.ResponseHeaders[“content length]”);
var buffer=新字节[32768];
长totalRead=0;
while(总读取<长度)
{
int read=input.read(buffer,0,buffer.Length);
如果(读取!=0)
{
输出。写入(缓冲区,0,读取);
totalRead+=读取;
}
Thread.Sleep(100);//这就是减慢下载速度的原因,使数字变大以减慢下载速度
}
}
<代码> > p>使用代码> WebCopy.OpenRead < /Cord>,并在读取响应的过程中添加一些休眠。大致如下:
using(var client = new WebClient())
using(var input = client.OpenRead("http://whatever.com/myfile.txt"))
using(var output = File.OpenWrite("c:/temp/myfile.txt"))
{
var length = long.Parse(client.ResponseHeaders["content-length"]);
var buffer = new byte[32768];
long totalRead = 0;
while(totalRead < length)
{
int read = input.Read(buffer, 0, buffer.Length);
if (read != 0)
{
output.Write(buffer, 0, read);
totalRead += read;
}
Thread.Sleep(100); // This is what slows down the download, make number bigger to download slower
}
}
使用(var client=new WebClient())
使用(var input=client.OpenRead(“http://whatever.com/myfile.txt"))
使用(var output=File.OpenWrite(“c:/temp/myfile.txt”))
{
var length=long.Parse(client.ResponseHeaders[“content length]”);
var buffer=新字节[32768];
长totalRead=0;
while(总读取<长度)
{
int read=input.read(buffer,0,buffer.Length);
如果(读取!=0)
{
输出。写入(缓冲区,0,读取);
totalRead+=读取;
}
Thread.Sleep(100);//这就是减慢下载速度的原因,使数字变大以减慢下载速度
}
}
退房。下面是一个以低优先级传输的快速示例:
using (var done = new EventWaitHandle(false, EventResetMode.ManualReset))
{
var manager = new Manager();
var job = manager.CreateJob("Test Job Name");
var jobevents = new JobEvents();
job.AddFile(
@"F:\DEV\TestBITS\TestBITS\dotnetfx35.exe",
"http://download.microsoft.com/download/2/0/e/20e90413-712f-438c-988e-fdaa79a8ac3d/dotnetfx35.exe");
job.Priority = JobPriority.Low;
jobevents.JobTransferred += (sender, e) => { e.Job.Complete(); done.Set(); };
jobevents.JobError += (sender, e) => { e.Job.Cancel(); done.Set(); };
jobevents.AddJob(job);
job.ResumeJob();
done.WaitOne();
}
退房。下面是一个以低优先级传输的快速示例:
using (var done = new EventWaitHandle(false, EventResetMode.ManualReset))
{
var manager = new Manager();
var job = manager.CreateJob("Test Job Name");
var jobevents = new JobEvents();
job.AddFile(
@"F:\DEV\TestBITS\TestBITS\dotnetfx35.exe",
"http://download.microsoft.com/download/2/0/e/20e90413-712f-438c-988e-fdaa79a8ac3d/dotnetfx35.exe");
job.Priority = JobPriority.Low;
jobevents.JobTransferred += (sender, e) => { e.Job.Complete(); done.Set(); };
jobevents.JobError += (sender, e) => { e.Job.Cancel(); done.Set(); };
jobevents.AddJob(job);
job.ResumeJob();
done.WaitOne();
}
您使用什么来传输文件?scp?ftp?wget?还有别的工具吗?注意curl有一个--limit rate选项,如果您可以添加一些代码来说明您现在如何进行文件传输,那么它会有所帮助。@sam:new WebClient().DownloadFile(url,fn)
@ux9i:我用什么对我来说都不重要。也许我会启动一个curl进程你用什么来传输文件?scp?ftp?wget?还有别的工具吗?注意curl有一个--limit rate选项,如果您可以添加一些代码来说明您现在如何进行文件传输,那么它会有所帮助。@sam:new WebClient().DownloadFile(url,fn)
@ux9i:我用什么对我来说都不重要。也许我会启动一个卷曲过程