Здравствуйте, <Аноним>, Вы писали:
А>Снова жопа: написал код блокирующими сокетами и сделал вызов select
А>сначала все было круто, а потом я снова попал. селект все время возвращает 0 — выходит по таймауту. И когда там данных нет, и когда их туда не успевают засунуть. Снова таже бодяга: увеличивать таймаут в ущерб производительности, а вдруг там окажется файл чуть больше чем я предполагаю?
Что значит "увеличивать таймаут в ущерб производительности", вы можете определить величину таймаута после которого вы будете "думать, что всё плохо". После этого таймаута рвёте связь и считаете, что передача не удалась.
Величина таймаута, когда "всё нормально" — не влияет на производительность, так как select не "держит" программу пока не истечёт таймаут, а "отпускает" как только данные появятся.