нежелательная строка символов NUL после чтения байтов TCP-потока mjpg

Я пытаюсь записать изображение в формате jpeg, отправленное камерой Ethernet, в потоке mjpg. Изображения, которые я получаю с помощью своего приложения Borland C++ (VSPCIP), иногда «испорчены»: у меня есть пример «поврежденного кадра jpeg»: он имеет 21690 символов (для изображения jpeg 640x480), и среди них есть строка 5045 следующие символы, имеющие значение «NUL» (отображается как NUL в Notepad++). И поскольку я перестаю читать байты, когда достигаю «длины содержимого», указанной в заголовке mjpg, следующие байты обрезаются.

Две вещи: - Сначала я хотел бы удалить эти поврежденные кадры: как я могу (быстро) обнаружить строку, скажем, более 50 (или непосредственно 5000 или 5045) следующих символов «NUL»)? - Мне нужно выяснить, почему мое приложение добавляет эту строку из следующих символов "NUL".


person Arnaud    schedule 13.01.2012    source источник
comment
Я бы не стал пытаться обнаружить и удалить нулевые байты из полученного потока. Я бы поработал над исправлением ошибки, из-за которой вы думали, что получили их. Внимательно запишите количество полученных вами байтов — держу пари, что количество байтов в файле плюс размер заголовка больше, чем полученное вами число.   -  person David Schwartz    schedule 13.01.2012
comment
хорошо, я нашел подсказку: если мой метод ReadByte возвращает false, я могу пропустить текущий кадр или дождаться следующего истинного ReadByte(), но если я подожду, я иногда застреваю в цикле...   -  person Arnaud    schedule 13.01.2012
comment
Это не имеет особого смысла, не видя кода.   -  person David Schwartz    schedule 13.01.2012