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