|
正 文: 只要設(shè)置 IdFTP1.ReadTimeout:=3000; IdFTP1.ConnectTimeout:=3000; 這就OK了。 IdIOHandlerStack 里的 WaitFor 是受ReadTimeout限制的,不要去掉,加上 IdFTP1.ReadTimeout:=3000; 就成了?!? 經(jīng)過飄易的測試,果然,當(dāng)加上 ReadTimeout 的屬性時,我要的延時時間的效果就出來了。雖然超時的時間和我預(yù)期的有所差別,但這個INDY 10 版本的超時時間真的起了作用。詳細(xì)的分析看我的測試,我的測試代碼如下: procedure TForm1.Button1Click(Sender: TObject);
我對這樣的網(wǎng)址 www.qq.org、www.youtube.com 進(jìn)行了測試,當(dāng)我沒有加上 IdHTTP1.ReadTimeout 這個屬性時,訪問以上2個網(wǎng)址的超時時間均是 20秒左右,無論 IdHTTP1.ConnectTimeout 設(shè)置多少。而當(dāng)我加上 IdHTTP1.ReadTimeout 屬性時,超時時間立即體現(xiàn)了出來。var t1,t2:int64; str1:string; IdHTTP1:TIdHTTP; begin try t1:=GetTickCount; //毫秒級 IdHTTP1 := TIdHTTP.create(nil); IdHTTP1.ReadTimeout:= strtoint(edit2.Text)*1000; IdHTTP1.ConnectTimeout:= strtoint(edit3.Text)*1000; str1:=IdHTTP1.Get(edit1.Text); IdHTTP1.Free; t2:=GetTickCount; memo1.Clear ; memo1.Lines.add(inttostr(t2-t1)); memo1.Lines.add(str1); except t2:=GetTickCount; memo1.Clear ; memo1.Lines.add(inttostr(t2-t1)); memo1.Lines.add('err:'+DateTimeToStr(now())); end; end; ReadTimeout設(shè)為1000ms時,實(shí)際超時時間為3125ms ReadTimeout設(shè)為2000ms時,實(shí)際超時時間為6125ms ReadTimeout設(shè)為3000ms時,實(shí)際超時時間為9125ms ReadTimeout設(shè)為4000ms時,實(shí)際超時時間為12125ms ReadTimeout設(shè)為5000ms時,實(shí)際超時時間為15125ms ReadTimeout設(shè)為6000ms時,實(shí)際超時時間為18125ms ReadTimeout設(shè)為7000ms時,實(shí)際超時時間為20969ms ReadTimeout設(shè)為8000ms時,實(shí)際超時時間為20953ms ReadTimeout設(shè)為9000ms時,實(shí)際超時時間為20953ms |
|
|