Я посылаю UDP broadcast запрос в поисках определённого сервиса.
Ответов может прйти несколько, может ни одного.
Жду ответа с помощью WSAAsyncSelect. Но ждать то надо определённое время, по истечении которого ответ уже не валиден.
В WSAAsyncSelect опций на истечение времени ожидания нет. Как быть?
Переписывать на блокирующиеся сокеты, с выделением потока под приём? Или есть способ лучше?
Ну можно, но не очень красиво.
Posted via RSDN NNTP Server 1.7 "Bedlam"
Здравствуйте, 9msn, Вы писали:
9>Я посылаю UDP broadcast запрос в поисках определённого сервиса.
9>Ответов может прйти несколько, может ни одного.
9>Жду ответа с помощью WSAAsyncSelect. Но ждать то надо определённое время, по истечении которого ответ уже не валиден.
9>В WSAAsyncSelect опций на истечение времени ожидания нет. Как быть?
9>Переписывать на блокирующиеся сокеты, с выделением потока под приём? Или есть способ лучше?
Возможно я не прав

, но кто мешает сделать так:
timeval tmv; // сюда заносишь реальное значение тайм-аута
fd_set ready;
FD_ZERO(&ready);
FD_SET(sock, &ready);
int res = select(sock + 1, &ready, 0, 0, &tmv);
if(res < 0){
//-------------------------- error
}else if(res == 0){
//-------------------------- timeout
}else{
// ---- всё ok
}
Здравствуйте, 9msn, Вы писали:
9>Я посылаю UDP broadcast запрос в поисках определённого сервиса.
9>Ответов может прйти несколько, может ни одного.
9>Жду ответа с помощью WSAAsyncSelect. Но ждать то надо определённое время, по истечении которого ответ уже не валиден.
9>В WSAAsyncSelect опций на истечение времени ожидания нет. Как быть?
9>Переписывать на блокирующиеся сокеты, с выделением потока под приём? Или есть способ лучше?
Порождай поток, который создает этот сокет и живет заданное время...