现在编写一段代码来实现将数据库中大量贴子粘贴到一网站中,在测试时发现经常是发了部分贴子后就要报‘socket error #10054 connect reset by peer’错,怀疑程序未考虑网站服务程序处理贴子的时间延迟,但不知道如何处理,请高手指教。
附程序代码:   //先获取COOKIES ,如果不获取COOKIES,发贴次数一多时就会报 ‘connect time out’错,即超时,通过设置httpClient.ReadTimeout:=1000来解决也不行,奇怪的是设置httpClient.ReadTimeout:=1000程序反而产生‘Read Timeout’的异常,无赖用次办法来解决,不知道有无更好的办法?
    Cookie:='';
    i:=0;
    J:=0;
    httpClient.AllowCookies:=true;    LoginUrl:='http://222.233.12.35/ZZFW/hdcx.asp';
    Response:= TStringStream.Create('');
    LoginInfo:= TStringList.Create;    LoginInfo.Clear;
    LoginInfo.Add('ClassID=2');
    LoginInfo.Add('ClassChild_ID=19');
    
    try
      httpClient.Post(LoginUrl,LoginInfo,Response);
    except
      showmessage('登陆失败');
    end;
        for i :=0 to httpClient.Response.RawHeaders.Count-1 do
    begin
      if UpperCase(Copy(httpClient.Response.RawHeaders[i],1,10)) = 'SET-COOKIE' then
      begin
        Cookie :=Trim(Copy(httpClient.Response.RawHeaders[i],12,MAXINT));
        Cookie :=Copy(Cookie,1,Pos(';',Cookie));
        MyCookList :=MyCookList+Cookie;
        
      end;
    end;
    httpClient.Request.RawHeaders.Add('Cookie: '+MyCookList);
    
//开始发贴
    LoginUrl:= 'http://222.233.12.35/ZZFW/Search_Result.asp?ClassID=2&ClassChild_ID=19';    WHILE NOT ADOTable1.Eof DO
    BEGIN
        LoginInfo.Clear;
        LoginInfo.Add('SDE='+trim(ADOTable1.FieldByName('A').AsString));
        i:=0;
        
        try
            ResponseStream:=TMemoryStream.Create;
        try
           J:=0;
 
           httpClient.Request.Referer:='http://222.233.12.35/hdcx.asp?sID=2&Child_ID=19';
           //通过循环来控制服务器未响应的发贴,直到响应为止,但次方式并不能解决问题。
           while i=0 do
           begin
              try
               i:=1;
               httpClient.Post(LoginUrl,LoginInfo,ResponseStream);
              except
               i:=0;
           end;          
            end            
        except
        end;
   except
  end;