[fpc-pascal] socket timeout
Xiangrong Fang
xrfang at gmail.com
Wed Apr 17 09:17:09 CEST 2013
Will this be a CPU hog:
t := Now;
while fprecv(s, @buf, buf_len, MSG_DONTWAIT) < 0 do begin
if Now - t > 0.00001 * timeout then Break; // approx. <timeout> seconds
end;
Thanks
2013/4/16 Luca Olivetti <luca at ventoso.org>
> Al 16/04/13 12:20, En/na Michael Schnell ha escrit:
> > On 04/16/2013 11:26 AM, Xiangrong Fang wrote:
> >> How can I set the connection and read/write timeout when using socket
> >> in free pascal?
> > I seem to remember that synapse can do this.
>
> Only in svn and it does it this way
>
> if FConnectionTimeout > 0 then
> begin
> // connect in non-blocking mode
> b := NonBlockMode;
> NonBlockMode := true;
> SockCheck(synsock.Connect(FSocket, Sin));
> if (FLastError = WSAEINPROGRESS) OR (FLastError = WSAEWOULDBLOCK) then
> if not CanWrite(FConnectionTimeout) then
> FLastError := WSAETIMEDOUT;
> NonBlockMode := b;
> end
> else
> SockCheck(synsock.Connect(FSocket, Sin));
>
>
> NonBlockMode in turn uses fpIoCtl with the FIONBIO parameter,
> WSAEINPROGRESS=EsysEINPROGRESS, WSAEWOULDBLOCK=EsysEWOULDBLOCK and
> CanWrite does an fpSelect
>
> Bye
> --
> Luca
>
> _______________________________________________
> fpc-pascal maillist - fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-pascal
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20130417/2411e790/attachment.html>
More information about the fpc-pascal
mailing list