Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

НЕБЛОКИРУЮЩИЕ СОКЕТЫ

23K
17 февраля 2007 года
Andrei B.
3 / / 14.02.2007
Привет.

 
Код:
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 ?

Спасибо.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог