FD_ZERO(FDSet1);
FD_SET(Socket_Handle,FDSet1);
SELECT (FDSet1.Count,@FDSet1,nil,nil,@TV);
if FD_ISSET(Socket_Handle, FDSet1) = TRUE then
begin
i:=RECV(Socket_Handle,Buf,255,0);
end;
НЕБЛОКИРУЮЩИЕ СОКЕТЫ
Код:
Значит ли это что RECV гарантированно вернет значение > 0 ? Так как FD_ISSET сообщает нам, что данные для чтения в буфере есть. Спрашиваю потому, что у меня RECV иногда возвращает 0, т.е. данные не получает, а если вместо
Код:
i:=RECV(Socket_Handle,Buf,255,0);
написать
Код:
while i==0 do i:=RECV(Socket_Handle,Buf,255,0);
то программа виснет.
Как гарантированно получить данные от RECV ?
Спасибо.