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

时间:2022-05-17 22:07:36
摘抄了部分代码,但是如果下载包比较大时,发现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();

5 个解决方案

#1


没人搭理?    dingding l 

#2


下载的内容大,当然时间长了。

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

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


你为什么不保存读取到的字节?玩的程序?

#3


异步下载吧,这样不用管有多大需要多久。

#4


提倡异步策略。
。。。。。。。。。。。。。。。

#5


目前也遇到这个问题咯。只是不知道2楼说的读取到字节怎么搞。呵呵。。新手。。

#1


没人搭理?    dingding l 

#2


下载的内容大,当然时间长了。

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

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


你为什么不保存读取到的字节?玩的程序?

#3


异步下载吧,这样不用管有多大需要多久。

#4


提倡异步策略。
。。。。。。。。。。。。。。。

#5


目前也遇到这个问题咯。只是不知道2楼说的读取到字节怎么搞。呵呵。。新手。。