Тема: WinSock API
Показать сообщение отдельно
  #4  
Старый 11.12.2010, 18:09
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Я немного изменил функцию, чтобы она возвращала мне 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, даже при отключенном клиенте.
В чем ошибка?
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием