Можете ли вы контролировать, что сервер отправляет вам? В большинстве случаев, когда получатель оперирует полученными данными, отправка ACK прикладного уровня после завершения работы позволит отправителю узнать, когда отправлять следующий запрос. Это гарантирует, что данные не будут потеряны (так как TCP гарантирует, что они не будут потеряны в сети).
Если вы не можете изменить способ, которым сервер отправляет вам данные, вы можете рассмотреть возможность запуска приемника в другом потоке, где он будет сохранять каждый входящий запрос в кэш (либо только в ОЗУ, либо на HD). Затем рабочий поток (или несколько потоков) будет читать запросы из этого кэша и выполнять необходимую работу. Таким образом, вы получите полный контроль над буферизацией данных.