LINUX.ORG.RU

История изменений

Исправление neversleep, (текущая версия) :

Перед recv() делай ioctl(sock, FIONREAD, &length) - чтобы узнать размер данных доступных для чтения, если <= 0, делай sleep(), а если и после ожидания ничего не пришло, можно предположить, что данные получены (естественно, нужно проверять результаты ф-ций). Вообще наверно лучше сделать через неблокирующие сокеты, с помощью select().

Исходная версия neversleep, :

Перед recv() делай ioctl(fd, FIONREAD, &length) - чтобы узнать размер данных доступных для чтения, если <= 0, делай sleep(), а если и после ожидания ничего не пришло, можно предположить, что данные получены (естественно, нужно проверять результаты ф-ций). Вообще наверно лучше сделать через неблокирующие сокеты, с помощью select().