Я немного изменил функцию, чтобы она возвращала мне True или False.
Код:
function CheckSock(ASocket: TSocket; ATimeOutWrite: integer): boolean;
var
ErrorCode: integer;
FDSet: TFDSet;
TimeVal: TTimeVal;
begin
result := false;
if ASocket = INVALID_SOCKET then
raise Exception.Create('invalid socket');
FD_ZERO(FDSet);
FD_SET(ASocket, FDSet);
TimeVal.tv_sec := ATimeOutWrite div 1000;
TimeVal.tv_usec := (ATimeOutWrite mod 1000) * 1000;
select(0, nil, @FDSet, nil, @TimeVal);
if FD_ISSET(ASocket, FDSet) then
result := true;
end;
Однако почему-то мне всегда возвращается TRUE, даже при отключенном клиенте.
В чем ошибка?