Http下载代码
public void HttpDownloadProcess(long lStartPos, FileStream fs)
{
do
{
try
{
if (FileSize == 0)
{
FileSize = GetFileContentLength(Url);
}
if (FileSize != 0 && FileSize == lStartPos)
{
//下载完成
fs.Close();
return;
}
var request = (HttpWebRequest)WebRequest.Create(Url);
request.ReadWriteTimeout = ReadWriteTimeOut;
request.Timeout = TimeOutWait;
if (lStartPos > 0)
request.AddRange((int)lStartPos);//设置Range值,断点续传
//向服务器请求,获得服务器回应数据流
WebResponse respone = request.GetResponse();
this.FileSize = respone.ContentLength + lStartPos;
this.FileDownloadedSize = lStartPos;
Stream ns = respone.GetResponseStream();
byte[] nbytes = new byte[bytebuff];
int nReadSize = -1;
while (nReadSize > 0 || nReadSize == -1)
{
nReadSize = ns.Read(nbytes, 0, bytebuff);
fs.Write(nbytes, 0, nReadSize);
fs.Flush();
FileDownloadedSize += nReadSize;
}
ns.Close();
fs.Close();
if (FileDownloadedSize != FileSize)//文件长度不等于下载长度,下载出错
{
Exception exception = new Exception("下载文件检验错误");
throw exception;
}
if (request != null)
{
request.Abort();
}
DownloadingCompleted(this, DownloadStatus.Completed);
TryCount = 0;
}
catch (Exception ex)
{
Logger.Error(ex);
fs.Close();
}
}
while (CheckErrorTryCounts() && Status == DownloadStatus.Downloading);
if (request != null)
{
request.Abort();
}
}
Ftp下载代码
public void FtpDownloadProcess(long lStartPos, FileStream fs)
{
FtpWebRequest request = null;
do
{
try
{
if (FileSize == 0)
{
FileSize = GetFileContentLength(Url);
}
if (FileSize != 0 && FileSize == lStartPos)
{
//下载完成
fs.Close();
return;
}
request = (FtpWebRequest)FtpWebRequest.Create(Url);
request.ReadWriteTimeout = ReadWriteTimeOut;
request.Timeout = TimeOutWait;
//向服务器请求,获得服务器回应数据流
WebResponse respone = request.GetResponse();
this.FileSize = respone.ContentLength + lStartPos;
this.FileDownloadedSize = lStartPos;
Stream ns = respone.GetResponseStream();
byte[] nbytes = new byte[bytebuff];
int nReadSize = -1;
while (nReadSize > 0 || nReadSize == -1)
{
nReadSize = ns.Read(nbytes, 0, bytebuff);
fs.Write(nbytes, 0, nReadSize);
fs.Flush();
FileDownloadedSize += nReadSize;
}
ns.Close();
fs.Close();
if (FileDownloadedSize != FileSize)//文件长度不等于下载长度,下载出错
{
Exception exception = new Exception("下载文件检验错误");
throw exception;
}
if (request != null)
{
request.Abort();
}
DownloadingCompleted(this, DownloadStatus.Completed);
TryCount = 0;
}
catch (Exception ex)
{
Logger.Error(ex);
fs.Close();
}
}
while (CheckErrorTryCounts() && Status == DownloadStatus.Downloading);
if (request != null)
{
request.Abort();
}
}
.Net的好写真的不是吹嘘啊哈哈哈