FtpWebResponse的GetResponse()响应时间非常长

stonehalf 2010-02-08 04:26:25
摘抄了部分代码,但是如果下载包比较大时,发现GetResponse();响应的时间特别长,不知道哪位大侠能指点一下,谢谢!


FileStream outputStream = new FileStream("d:" + "\\" + "0.rar", FileMode.Create);
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + "192.168.3.201" + "/" + "0.rar"));
reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
reqFTP.UseBinary = true;
reqFTP.Credentials = new NetworkCredential("zte", "zte");
FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();



//ftpHoldTime = new System.Threading.Timer(DisconnectFtp, ipaddress, 0, Convert.ToInt32(((eventpointMessage)ob).FtpHoldTime));

Stream ftpStream = response.GetResponseStream();
long cl = response.ContentLength;
int bufferSize = 2048;
int readCount;

byte[] buffer = new byte[bufferSize];

readCount = ftpStream.Read(buffer, 0, bufferSize);

while (readCount > 0)
{
outputStream.Write(buffer, 0, readCount);

readCount = ftpStream.Read(buffer, 0, bufferSize);
}
//Channel4_2.listView3.Items[FtpNo - 1].SubItems[2].Text = "成功";
ftpStream.Close();
outputStream.Close();
response.Close();
...全文
575 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
guyue_feixing 2011-11-11
  • 打赏
  • 举报
回复
目前也遇到这个问题咯。只是不知道2楼说的读取到字节怎么搞。呵呵。。新手。。
  • 打赏
  • 举报
回复
下载的内容大,当然时间长了。

有两个改进做法(同时):

1. 异步下载(异步读outputStream),或者至少将下载程序放到线程里。
2. 显示进度。例如将已经读取到的readCount 累计字节数动态显示出来。


你为什么不保存读取到的字节?玩的程序?
stonehalf 2010-02-09
  • 打赏
  • 举报
回复
没人搭理? dingding l
_autotest 2010-02-09
  • 打赏
  • 举报
回复
提倡异步策略。
。。。。。。。。。。。。。。。
happyboyxq1985 2010-02-09
  • 打赏
  • 举报
回复
异步下载吧,这样不用管有多大需要多久。

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧