正 文: 只要设置 IdFTP1.ReadTimeout:=3000; IdFTP1.ConnectTimeout:=3000; 这就OK了。 IdIOHandlerStack 里的 WaitFor 是受ReadTimeout限制的,不要去掉,加上 IdFTP1.ReadTimeout:=3000; 就成了。” 经过飘易的测试,果然,当加上 ReadTimeout 的属性时,我要的延时时间的效果就出来了。虽然超时的时间和我预期的有所差别,但这个INDY 10 版本的超时时间真的起了作用。详细的分析看我的测试,我的测试代码如下: procedure TForm1.Button1Click(Sender: TObject);
我对这样的网址 www.qq.org、www.youtube.com 进行了测试,当我没有加上 IdHTTP1.ReadTimeout 这个属性时,访问以上2个网址的超时时间均是 20秒左右,无论 IdHTTP1.ConnectTimeout 设置多少。而当我加上 IdHTTP1.ReadTimeout 属性时,超时时间立即体现了出来。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设为1000ms时,实际超时时间为3125ms ReadTimeout设为2000ms时,实际超时时间为6125ms ReadTimeout设为3000ms时,实际超时时间为9125ms ReadTimeout设为4000ms时,实际超时时间为12125ms ReadTimeout设为5000ms时,实际超时时间为15125ms ReadTimeout设为6000ms时,实际超时时间为18125ms ReadTimeout设为7000ms时,实际超时时间为20969ms ReadTimeout设为8000ms时,实际超时时间为20953ms ReadTimeout设为9000ms时,实际超时时间为20953ms |
|