On 05/04/2013 08:00 PM, Zaher Dirkey wrote: > Hmm there is diffrents > Yours > res:=select(sock+1,@readfds,@writefds,@exceptfds,@tv); > Mine > c := WinSock2.select(0, PSetRead, PSetWrite, nil, @TimeVal); > > 0 here in mine, in yours sock+1 (FHandle+1 in mine). > I will take more testing. > >
According to http://msdn.microsoft.com/en-us/library/windows/desktop/ms740141(v=vs.85).aspx : "nfds [in] Ignored. The nfds parameter is included only for compatibility with Berkeley sockets." I wrote the code for linux and then "ported" it to windows. However, in your code you do if (c = 0) or (c = SOCKET_ERROR) then begin Error; which is not correct. c=0 is the result of select returning after a timeout. It is not an error. The fact that if Socket.Select(10000, slRead) = erNone then is blocked forever​ is not normal. It should at least return after 10 seconds. Ludo _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal