Вы можете использовать recv()
с флагами MSG_PEEK
и MSG_DONTWAIT
, но нет твердой гарантии, что не будет больше доступных байтов, чем recv()
, возвращаемое в этом случае.
Использование буфера в вашей программе - это нормальный и приемлемый способ решения проблемы.