Вниз
Скачать: CL | DM;

как сделать time-out на recvfrom?   Найти похожие ветки 

 
3APA3A ©   (2004-03-22 22:04) [0]

создаю UDP socket
   socket...
   bind...
 и жду пакетов
   recvfrom()..
 надо как-нибудь сделать так, что-бы recvfrom ждал данные не более 3 или 5 секунд... то есть - если в стеке протокола нет данных - recvfrom ждет их 5 секунд и если их так и нет - возвращает управление в программу...


 
Verg ©   (2004-03-22 22:19) [1]

Воспользуйся классическим способом - select, например:

function WaitForData(S : TSocket; TimeOut : DWORD): integer;
var FDS : TFDset;
   Tv  : TTimeval;
   Ptv : PTimeVal;
begin
 FD_ZERO(FDS);
 FD_SET(S, FDS);
 Ptv := nil;
 if TimeOut <> INFINITE then
 begin
   Tv.tv_sec  := TimeOut div 1000;
   Tv.tv_usec := (TimeOut mod 1000) * 1000;
   Ptv := @Tv;
 end;
 result := select(0, @FDS, nil, nil, Ptv);
end;

Результат ф-ции будет > 0, если есть данные, 0 - если таймаут, SOCKET_ERROR - если произошла какая-нибудь ошибка (WSAGeLastError уточнит)

Можно обявить сокету асинхронный режим и вообще ничего не ждать - будут данные - тебе сообщат (WSAAsyncSelect) оконным сообщением.
Чтобы жить в "одном измерении" с WIN32 можно сокету назначить объект синхронизации - event, чтобы его можно было ожидать наравне/вместе с другим такими же (подобными) объектами как в ф-ции WaitForMultipleObjects или MsgWaitForMultipleObjects, а не только с сокетами же (как в select). Для этого предназначена ф-ция WSAEventSelect, но это уже из WINSock2.
OverLapped IO опять же можно применить, т.е. простейший ReadFile, где вместо хендла файла можно подставить сокет, сформировав и заполнив структуру TOverlapped...
Много способов в общем....


 
3APA3A ©   (2004-03-22 23:00) [2]

tnx...



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.021 c
4-1079499482
Vilux
2004-03-17 07:58
2004.05.16
Не работает FindWindow


8-1077973068
AlexTregubov
2004-02-28 15:57
2004.05.16
Цветное изображение в серое


3-1082557469
AMB
2004-04-21 18:24
2004.05.16
Отчет из Delphi7 в Word-97


1-1083674747
webpauk
2004-05-04 16:45
2004.05.16
Типы


1-1082893187
I.Ru.Ru
2004-04-25 15:39
2004.05.16
Можно ли в StringGridе изменять цвет определенной строки? Как?




   Наверх