[fpc-pascal] fphttclient, no way to specify a connect timeout

Luca Olivetti luca at ventoso.org
Sat Feb 24 15:06:09 CET 2018


El 24/02/18 a les 13:00, Luca Olivetti ha escrit:

> Sure, with some combination of kernel/winsock version it could possibly 
> work (with mine it doesn't), but then it would be just enough to set the 
> IoTimeout in the TFpHttpClient (which I'm already doing), no need to 
> modify ssockets.pp.

Correction: it works in linux (IIRC it didn't some years ago, now it's a 
documented feature, see  https://linux.die.net/man/7/socket) but it 
doesn't in windows (where the only option is to use a non-blocking socket).
Unluckily enough, my current target is windows :-(

Test procedure:

procedure TForm1.Button1Click(Sender: TObject);
var c:TFPHTTPClient;
   inicio: QWord;
begin
   c:=TFPHTTPClient.Create(nil);
   c.IOTimeout:=500;
   inicio:=GetTickCount64;
   try
     memo1.lines.add(c.Get('http://192.168.10.221/'));

   except
     on e:exception do
       memo1.lines.add(e.Message);
   end;
   caption:=IntToStr(GetTickCount64-inicio);
   c.free;

end;


The timeout is roughly 500 ms under linux, 18-20 seconds under windows 
(xp/7, didn't test 10).


Bye
-- 
Luca




More information about the fpc-pascal mailing list