ограничение recv
Подскажите как ограничить по времени выполнение функции, если ей ничего не предают?
Закрыть сокет по истечении таймаута?
Надо просто собрать весь мусор от предыдущей сессии.
Какой сессии? Собираетесь начать новый обмен не закрывая сокета? Сокеты-то хоть какие - TCP, SOCK_STREAM? Озвучьте тогда задачу более полно.
Насколько я понял он хочет, чтобы если recv долго не получает данных, то управление возвращалось его программе и он мог совершать другие действия.
Цитата: KIV
Насколько я понял он хочет, чтобы если recv долго не получает данных, то управление возвращалось его программе и он мог совершать другие действия.
Абсолютно верно!
Проблема в следующем: я подключаюсь к конвертеру RS-232->Ethernet. Устройство (назовём его УА) которое подключено к конвертеру выкидывает данные в конвертер, которые я успешно читаю по ТСР порту. Всё читается нормально до тех пор пока соединение не рвётся из-за проблем сети, тогда в конвертере остаётся мусор. Не было бы никаких проблем если бы мне с УА не надо было бы обмениваться служебной информацией. УА не начнёт отдавать данные пока не произойдёт обмена СИ. Собственно алгоритм я вижу такой:
1. Подключаюсь к порту;
2. Читаю порт;
2а. Если что то есть собираю мусор;
2б. Если пусто иду в пункт 3;
3. Обмен служебной информацией;
4. Приём данных;
Потому и вопрос: как ограничить по времени recv?
всем спасибо реализовал другим путём