![]() |
|
|
#1
|
||||
|
||||
![]() Че-то я туплю... Как на WinAPI по-нормальному проверить со стороны сервера, подключен ли клиент?
Пока ничего не придумал лучше, чем Код:
isize:=send(s,buf,buflen,0); Или хоть как получить для send код ошибки? jmp $ ; Happy End! The Cake Is A Lie. Последний раз редактировалось Bargest, 08.12.2010 в 17:41. |
#2
|
||||
|
||||
![]() Цитата:
Код:
procedure check(ASocket: TSocket; ATimeOutWrite: Integer); var ErrorCode: Integer; FDSet: TFDSet; TimeVal: TTimeVal; begin 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 not FD_ISSET(ASocket, FDSet) then raise Exception.Create('exception'); end; Пишу программы за еду. __________________ |
#3
|
||||
|
||||
![]() Спасибо вам!
jmp $ ; Happy End! The Cake Is A Lie. |
#4
|
||||
|
||||
![]() Я немного изменил функцию, чтобы она возвращала мне 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; В чем ошибка? jmp $ ; Happy End! The Cake Is A Lie. |
#5
|
||||
|
||||
![]() Поднимаю тему снова...
jmp $ ; Happy End! The Cake Is A Lie. |
#6
|
||||
|
||||
![]() Ап Ап Ап Ап Ап
jmp $ ; Happy End! The Cake Is A Lie. |