Я реализую программу симуляции сервера и хочу проверить, было ли что-либо получено через recv из TCP / IP-сокета без ожидания. Когда я устанавливаю флаг MSG_DONTWAIT, recv возвращает длину -1 и ошибочно «Ресурс временно доступен». вызов работает, когда используется флаг MSG_WAITALL.
Это не ошибка, а ожидаемое поведение. Документация MSG_DONTWAIT гласит:
Если данные недоступны, то вместо блокировки немедленно вернитесь с ошибкой EAGAIN.
Это означает, что вы должны ждать и справляться с такой ситуацией.
Проверьте здесь для ссылки и здесь для аналогичного обсуждения.