[fpc-pascal] Re: Odyssey: SSockets and Threads.

Michael Van Canneyt michael at freepascal.org
Fri Apr 26 08:58:03 CEST 2013



On Thu, 25 Apr 2013, silvioprog wrote:

> 2013/4/25 Michael Van Canneyt <michael at freepascal.org>
>       [...]
> Well, ssockets is very low level.
> 
> fpselect() is mostly useful when you combine multiple file descriptors at once. Although it can be done, IMHO it makes little sense to create a select() method on the socket stream,
> since it would only have one socket handle.
> 
> You can perfectly do a fpselect() with the handles of the streams that ssockets uses.
> 
> Michael.
> 
> 
> Nice.
> 
> The socket of Delphi and Synapse implements WaitForData:
> 
> function TWinSocketStream.WaitForData(Timeout: Longint): Boolean;
> var
>   FDSet: TFDSet;
>   TimeVal: TTimeVal;
> begin
>   TimeVal.tv_sec := Timeout div 1000;
>   TimeVal.tv_usec := (Timeout mod 1000) * 1000;
>   FD_ZERO(FDSet);
>   FD_SET(FSocket.SocketHandle, FDSet);
>   Result := select(0, @FDSet, nil, nil, @TimeVal) > 0;
> end;
> 
> I do not know where it would be used, it's just an observation hehe...

Yes, but the above is what I mean with 'it does not make much sense'.

I can easily add this - in fact I will do so, but with multiple sockets 
it is better to combine the waitfordata()

Michael.


More information about the fpc-pascal mailing list