Есть сетевое приложение, в котором необходимо прочитать из tcp соединения часть данных, которая определяется разделителем. Все, что за разделителем предназначено для следующего чтения. Данные не фиксированной длинны, поступают в произвольнные промежутки времени.
Как я понимаю, то, что прочитано recv, обратно в входную очередь уже не вернуть (вариант аля прочитал все, взял свое, остальное сунул обратно).
Тут на помощь может прийти флаг MSG_PEEK, но смущает необходимость двойного чтения — сначала читаю в буфер все (ну или в буфер с гарантированно ограниченным размером) с флагом MSG_PEEK, нахожу в буфере разделить, выделяю данные, и читаю "вникуда" данные из входной очереди без флага MSG_PEEK, чтобы из от туда удалить.
Быть может есть возможность просто указать системе, чтобы она удалила данные из входной очереди без чтения?